我一直在谷歌搜索,但我还没有找到解决方案。 问题与此处相同:Moving matplotlib legend outside of the axis makes it cutoff by the figure box 但是我不想保存这个数字,我只想在整个人物里面有传说。我也尝试过tight_layout但是没有用。我是matplotlib的新手,无法弄明白。这是我的源代码(我将一个matplot嵌入到PyQt4中):
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()
我在这里只是虚拟值。但是在应用程序中,用户可以选择节点,并且根据他选择的节点数量,图例越大/越小。我想缩小x轴侧面以获得更多传奇的位置。 - >子图不应填写图的100%(宽度/高度),而是100%高度和80%宽度,以便我的图例有足够的空间。
答案 0 :(得分:0)
这一行:
self.axes = self.fig.add_subplot(1, 1, 1, autoscale_on=False)
将创建一个轴来填充整个图形(或多或少),如您所述。
尝试:
self.axes = self.fig.add_axes([0.1, 0.1, 0.7, 0.8])
该列表的元素是:
[left_edge, bottom_edge, width, height]
其中所有值都是总图形尺寸的分数。