使用 add_axes 保存 matplotlib 图
Posted
技术标签:
【中文标题】使用 add_axes 保存 matplotlib 图【英文标题】:Saving matplotlib figure with add_axes 【发布时间】:2014-07-09 12:40:59 【问题描述】:我正在尝试保存顶部带有额外图像的图形。 然而 Python 只保存了底部的图。 我有:
fig = plt.figure(figsize=(8, 6))
ax = fig.add_subplot(111)
ax.plot(...)
...
ax_im = fig.add_axes([0.1, 1.0, 1, 1])
ax_im.set_xticks([])
ax_im.set_yticks([])
ax.imshow(...)
...
fig.savefig('image.png')
而 Matplotlib 只保存与ax
轴相关的图形。在 iPython 笔记本中
输出很好,它显示了两个数字,所以,我不知道发生了什么。
【问题讨论】:
我发现fig.savefig('image.png', bbox_inches='tight')
解决了这个问题。
【参考方案1】:
试试这样的
ax_im = fig.add_axes([0.1, 0.2, 0.5, 0.5], label='axes1')
解释是add_axes
的第二个参数是1.0。这指定了图顶部Axes
的底部。
以下示例对我有用:
import pylab as plt
fig = plt.figure(figsize=(8, 6))
ax = fig.add_subplot(212)
ax.plot(range(3))
ax_im = fig.add_axes([0.3, 0.5, 0.5, 0.4])
ax_im.set_xticks([])
ax_im.set_yticks([])
plt.show()
或者更简单,使用两次add_subplot
:
import pylab as plt
fig = plt.figure(figsize=(8, 6))
ax = fig.add_subplot(212)
ax.plot(range(3))
ax_im = fig.add_subplot(211)
ax_im.plot(range(3), 'o--')
ax_im.set_xticks([])
ax_im.set_yticks([])
plt.show()
【讨论】:
但是我想要第二个图在顶部,这就是为什么我将第二个值指定为1.0
。如果我使用0.2
,第二个图形将停留在第一个图形的中间。正如我所指定的,它在 iPython 输出上看起来不错:)
fig.savefig
仅打印 0 到 1 之间的区域。如果您想在顶部显示第二个图,则必须在下部显示第一个图。我更新了这个例子。这里add_subplot
用212
调用。然后第二个轴从第一个轴上方 0.5 处开始。
是的,我也在想,这似乎是一个更好的选择。但是我找到了解决方案,并在评论中发布了该解决方案。感谢任何方式:)以上是关于使用 add_axes 保存 matplotlib 图的主要内容,如果未能解决你的问题,请参考以下文章
如何更改 matplotlib 中轴对象刻度的字体大小 [重复]