PyQt4和matplotlib:绘图外的图例被切断

PyQt4和matplotlib:绘图外的图例被切断,matplotlib,pyqt4,embedding,Matplotlib,Pyqt4,Embedding,我在谷歌上搜索了很多次,但我还没有找到解决办法。 问题与此处相同: 但我不想保存这个图形,我只想在整个图形中包含图例。我也尝试过紧凑的布局,但没有成功。我对matplotlib完全陌生,无法理解。以下是我的源代码(我正在将matplot嵌入PyQt4): 我在这里只输入了虚拟值。但在应用程序中,用户可以选择节点,根据他选择的节点数量,图例越大/越小。我想缩小x轴一侧,以便为图例提供更多的位置。 -->子图不应填充图形的100%(宽度/高度),而应填充100%高度和80%宽度,以便我的图例有足够的

我在谷歌上搜索了很多次,但我还没有找到解决办法。 问题与此处相同: 但我不想保存这个图形,我只想在整个图形中包含图例。我也尝试过紧凑的布局,但没有成功。我对matplotlib完全陌生,无法理解。以下是我的源代码(我正在将matplot嵌入PyQt4):

我在这里只输入了虚拟值。但在应用程序中,用户可以选择节点,根据他选择的节点数量,图例越大/越小。我想缩小x轴一侧,以便为图例提供更多的位置。 -->子图不应填充图形的100%(宽度/高度),而应填充100%高度和80%宽度,以便我的图例有足够的空间。

此行:

self.axes=self.fig.add\u子批次(1,1,1,自动缩放打开=假)

将创建一个轴,按照您的描述填充整个图形(或多或少)

尝试:

self.axes=self.fig.add_轴([0.1,0.1,0.7,0.8])

该列表的要素包括:


[左边缘、下边缘、宽度、高度]
其中所有值都是图形总尺寸的分数。

Thx:D我会试试。我还找到了一个解决方案:figure.subplot\u adjust(right=0.2)。
class GraphACanvas(FigureCanvas):
    def __init__(self, parent=None, width=5, height=5, dpi=100):        
        self.fig = Figure(figsize=(width, height), facecolor=backColorHexName, dpi=dpi)
        self.axes = self.fig.add_subplot(1, 1, 1, autoscale_on=False)

        self.axes.set_xticks(arange(-0.1, 1.4, 0.1))
        self.axes.set_yticks(arange(-0.1, 1.4, 0.1))

        FigureCanvas.__init__(self, self.fig)
        self.setParent(parent)

        FigureCanvas.setSizePolicy(self, QtGui.QSizePolicy.Expanding, Gui.QSizePolicy.Expanding)
        FigureCanvas.updateGeometry(self)

def computeFigure(self):
    col = []
    for i in xrange(0, 100):
        x = i/100
        y = y/100
        line, = self.axes.plot(x, y, 'o', color=blue, label='label')
        col.append(line.get_c())

    self.axes.set_xlabel('x', labelpad=10, rotation=0)
    self.axes.set_ylabel('y', labelpad=10, rotation=0)

    leg = self.axes.legend(loc=2, bbox_to_anchor=(1.0, 0.5), borderaxespad=0., fontsize='x-small', framealpha=0.25, markerscale=0.5, ncol=1, numpoints=1)

    for color,text in zip(col,leg.get_texts()):
        text.set_color(color)

test = GraphACanvas()
test.computeFigure()