将matplotlib图例移至轴外部会导致它被图形框截断。

13 浏览
0 Comments

将matplotlib图例移至轴外部会导致它被图形框截断。

我熟悉以下问题:

- [Matplotlib savefig with a legend outside the plot](https://stackoverflow.com/questions/8971834/matplotlib-savefig-with-a-legend-outside-the-plot)

- [How to put the legend out of the plot](https://stackoverflow.com/questions/4700614/how-to-put-the-legend-out-of-the-plot)

这些问题中的答案似乎有能力微调坐标轴的缩小程度,以适应图例的大小。然而,缩小坐标轴并不是一个理想的解决方案,因为它会使数据变小,实际上更难解释;特别是当数据复杂且有很多要处理的内容时...所以需要一个大的图例。

文档中关于复杂图例的示例证明了这种需求,因为他们的图例实际上完全遮挡了多个数据点。

我想要能够动态扩展图形框的大小以适应不断扩大的图例。

import matplotlib.pyplot as plt
import numpy as np
x = 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](http://pastebin.com/grVjc007)

0