为了账号安全,请及时绑定邮箱和手机立即绑定

将matplotlib图例移到轴外,使其被图形框切断

将matplotlib图例移到轴外,使其被图形框切断

繁星coding 2019-11-05 11:22:20
缩小轴并不是一个理想的解决方案,因为它会使数据变小,从而实际上很难解释。特别是当它复杂并且有很多事情要发生时...因此需要一个大的传说文档中复杂图例的示例说明了这一点,因为其图中的图例实际上完全遮盖了多个数据点。http://matplotlib.sourceforge.net/users/legend_guide.html#legend-of-complex-plots我想做的是动态扩展图形框的大小以适应不断扩展的图形图例。import matplotlib.pyplot as pltimport numpy as npx = np.arange(-2*np.pi, 2*np.pi, 0.1)fig = plt.figure(1)ax = fig.add_subplot(111)ax.plot(x, np.sin(x), label='Sine')ax.plot(x, np.cos(x), label='Cosine')ax.plot(x, np.arctan(x), label='Inverse tan')lgd = ax.legend(loc=9, bbox_to_anchor=(0.5,0))ax.grid('on')请注意,最终标签“ Inverse tan”实际上是如何位于图形框之外的(看起来很不完整-而不是出版物质量!)最后,有人告诉我这是R和LaTeX中的正常行为,所以我有些困惑,为什么在python中如此困难……是否有历史原因?Matlab在这件事上是否同样贫穷?我在pastebin http://pastebin.com/grVjc007上有(仅略长)此代码的较长版本
查看完整描述

3 回答

?
12345678_0001

TA贡献1802条经验 获得超5个赞

补充:我发现应该立即解决问题的方法,但是下面的代码其余部分也提供了替代方法。


使用此subplots_adjust()函数可将子图的底部向上移动:


fig.subplots_adjust(bottom=0.2) # <-- Change the 0.02 to work for your plot.

然后bbox_to_anchor在图例命令的图例部分中使用偏移量,以将图例框放置在所需的位置。设置figsize和使用的某种组合subplots_adjust(bottom=...)应该可以为您产生质量图。


备选: 我只是更改了这一行:


fig = plt.figure(1)

至:


fig = plt.figure(num=1, figsize=(13, 13), dpi=80, facecolor='w', edgecolor='k')

并改变了


lgd = ax.legend(loc=9, bbox_to_anchor=(0.5,0))


lgd = ax.legend(loc=9, bbox_to_anchor=(0.5,-0.02))

并在我的屏幕(24英寸CRT显示器)上正常显示。


此处figsize=(M,N)将图形窗口设置为M英寸乘N英寸。只是玩这个,直到它看起来适合您。将其转换为更具可伸缩性的图像格式,并在必要时使用GIMP进行编辑,或者viewport在包括图形时仅使用LaTeX 选项进行裁剪。


查看完整回答
反对 回复 2019-11-05
  • 3 回答
  • 0 关注
  • 1125 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信