在 matplotlib 中保存子图
是否可以将 matplotlib 图中的单个子图保存(保存为 png)?假设我有
import pyplot.matplotlib as plt
ax1 = plt.subplot(121)
ax2 = plt.subplot(122)
ax1.plot([1,2,3],[4,5,6])
ax2.plot([3,4,5],[7,8,9])
是否可以将两个子图保存到不同的文件中,或者至少将它们单独复制到一个新的图形中以保存它们?
我在 RHEL 5 上使用 matplotlib 1.0.0 版本。
Is it possible to save (to a png) an individual subplot in a matplotlib figure? Let's say I have
import pyplot.matplotlib as plt
ax1 = plt.subplot(121)
ax2 = plt.subplot(122)
ax1.plot([1,2,3],[4,5,6])
ax2.plot([3,4,5],[7,8,9])
Is it possible to save each of the two subplots to different files or at least copy them separately to a new figure to save them?
I am using version 1.0.0 of matplotlib on RHEL 5.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
虽然@Eli 说得非常正确,通常不需要太多这样做,但这是可能的。
savefig
采用bbox_inches
参数,可用于有选择地将图形的一部分保存到图像中。这是一个简单的例子:
完整的图:
第二个子图内的区域:
第二个子图周围的区域在 x 方向上填充 10%,在 y 方向上填充 20%:
While @Eli is quite correct that there usually isn't much of a need to do it, it is possible.
savefig
takes abbox_inches
argument that can be used to selectively save only a portion of a figure to an image.Here's a quick example:
The full figure:
Area inside the second subplot:
Area around the second subplot padded by 10% in the x-direction and 20% in the y-direction:
应用 3 年后 @Joe 的答案中的 full_extent() 函数,您可以得到正是OP正在寻找的东西。或者,您可以使用 Axes.get_tightbbox() ,它提供了更紧密的边界框
我会发布图片但我缺乏声誉点
Applying the
full_extent()
function in an answer by @Joe 3 years later from here, you can get exactly what the OP was looking for. Alternatively, you can useAxes.get_tightbbox()
which gives a little tighter bounding boxI'd post a pic but I lack the reputation points