Python Matplotlib FigureCanvas:将四边形网格正确打印到轴中

Python Matplotlib FigureCanvas:将四边形网格正确打印到轴中,python,matplotlib,pyqt5,Python,Matplotlib,Pyqt5,我使用matplotlib的Qt5后端,并尝试在FigureCanvas中嵌入一个绘图。现在,我在用pcolormesh将大型矩阵绘制到图形的Axis对象中时遇到了一个问题。不知何故,生成的四边形网格不会填充整个轴,而是在网格上方和右侧留下空间 第二个问题是,尽管我调用autofmt_xdata(),但x轴标签没有旋转。以下是相关代码: class MyCanvas(FigureCanvas): def __init__(self, parent=None): self

我使用matplotlib的Qt5后端,并尝试在FigureCanvas中嵌入一个绘图。现在,我在用pcolormesh将大型矩阵绘制到图形的Axis对象中时遇到了一个问题。不知何故,生成的四边形网格不会填充整个轴,而是在网格上方和右侧留下空间

第二个问题是,尽管我调用autofmt_xdata(),但x轴标签没有旋转。以下是相关代码:

class MyCanvas(FigureCanvas):
    def __init__(self, parent=None):
        self.figure = Figure()
        self.figure.set_tight_layout(True)
        self.matrix_axes = self.figure.add_subplot(111)
        divider = make_axes_locatable(self.matrix_axes)
        self.color_axes = divider.append_axes("right", size=0.1, pad=0.05)
        self.matrix_axes.hold(False)
        self.color_axes.hold(False)

    def build_connectivity_matrix(self, source_neurons, target_neurons):
        # plot the data,
        # data is a 2d numpy array
        color_mesh = self.matrix_axes.pcolormesh(data, cmap=color_map)
        # add tick labels
        self.matrix_axes.set_yticklabels(labels_y)
        self.matrix_axes.set_xticklabels(labels_x)
        self.figure.autofmt_xdate(rotation=30)  # rotate x axis labels to fit more
        # plot color bar
        colorbar = self.figure.colorbar(color_mesh, cax=self.color_axes, orientation='vertical')

canvas = MyCanvas()
canvas.build_connectivity_matrix()

有什么想法吗?

在这种情况下,我也遇到过空白的问题。尝试在执行颜色网格后添加此选项:

self.matrix_axes.set_xlim(xmax = data.shape[1])
self.matrix_axes.set_ylim(ymax = data.shape[0])
编辑以添加x平方的答案:


您可以使用
self.matrix\u axes.set\u xticklabels(labels\u x,rotation=30)
来设置文本的旋转。

就是这样!知道x标签的另一个问题吗?我知道了。我不需要使用额外的调用:
self.figure.autofmt\u xdate(rotation=30)
,我可以像这样将所需的旋转添加到set\xticklabels调用中:
self.matrix\u axes.set\xticklabels(labels\u x,rotation=30)
。请在您的答案中添加此信息,以使其完整,我可以接受。非常感谢。有趣。我想过要这么说,但我认为如果autofmt_xdate不起作用,也不会起作用。我没有Qt5,所以我无法测试您的代码,以查看哪些代码有效,哪些代码无效