Matplotlib FigureCanvas:将Quadmesh正确绘制成轴

时间:2015-07-03 17:27:46

标签: python matplotlib pyqt5

我使用Qt5后端进行matplotlib并尝试在FigureCanvas中嵌入一个绘图。现在我有一个问题,用pcolormesh绘制大矩阵到图的轴对象。不知何故,生成的QuadMesh不会填满整个轴,但会在网格的上方和右侧留下空间。

enter image description here

第二个问题是虽然我调用了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()

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

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

self.matrix_axes.set_xlim(xmax = data.shape[1])
self.matrix_axes.set_ylim(ymax = data.shape[0])

编辑以添加x平方答案:

您可以使用self.matrix_axes.set_xticklabels(labels_x, rotation=30)设置文字的旋转。