偏移matplotlib的一个图例项目

时间:2014-06-19 10:59:09

标签: python matplotlib legend

在python的matplotlib中,对于一篇关于牛顿方法的文章,我想要想象前三个迭代和线图中的最后一个迭代,其中每个迭代显示为一个单独的曲线。图例标签将类似于迭代1'迭代2'迭代3'迭代14'迭代14'为了清楚起见,我希望在视觉上将前三个从前一个偏移,或者使用一些空白区域,或者理想地使用三个点来表示跳跃。有人知道实现这个目标的方法吗?

1 个答案:

答案 0 :(得分:0)

您可以显示2个图例。第一个是3次迭代,第二次是最后一次迭代:

l1 = plt.legend(data_for, 3_iterations, loc=[1.01,0.6])
l2 = plt.legend(data_for, last_iteration, loc=[1.01,0.2])
plt.gca().add_artist(l1) # to add back first legend

loc可让您选择图例的位置。这里它将位于图的右侧,l1位于l2之上。您可以对其进行修改,使其尽可能清晰。

对于三重点,您可以使用plt.text(x,y,"...")添加它们,其中x和y在您想要的地方进行协调' ...'。

如果您使用代码编辑问题,并使用实例,我可能会更精确。


其他解决方案:

让我们说leg是图例对象,你可以移动图例的某些部分。例如,如果要移动图例的第二行([1]):

L2 = leg.get_lines()[1]
L2.set_ydata(np.array(L2.get_ydata())-2) # move down of 2 units the line (in the legend based coordinates)

移动相关文字:

T2 = leg.texts[1]
T2.set_y(-2)

和框架:

frame = leg.get_frame()
frame.set_height(frame.get_height()+20) 

对于框架,它实际上对我不起作用我不知道为什么。也许它会对你有用。 或者,您可以使用:

leg=plt.legend(borderpad=2)

一步一步,您可以设置您的图例。可能很长,我会选择第一个选项,因为你可以删除框架,它不会引人注目。

希望这有帮助