37

我正在尝试将 Matplotlib 图保存为 iPython 笔记本中的文件。

import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_axes([1,1,1,1])
ax.plot([1,2])

fig.savefig('test.png')

iPython notebook 中的内联视图看起来不错:

iPython 笔记本中图形的内联视图


文件“test.png”几乎是空的。看起来绘图移到了右上角,您可以在角落看到刻度标签“1.0”和“0.0”。

测试.png

如何从 iPython 笔记本中生成一个看起来像内联视图的文件?

4

2 回答 2

36

问题已解决:'bbox_inches='tight'向 savefig 添加参数。

import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_axes([1,1,1,1])
plt.plot([1,2])

savefig('test.png', bbox_inches='tight')

我不明白这里发生了什么,但该文件现在看起来像 iPython 笔记本内联文件。耶。

于 2013-10-09T12:41:49.700 回答
6

实际上,savefig它工作正常。当您调用 时add_axes,您的列表指定一个矩形:[left, bottom, width, height]。由于该图形在两个轴上从 0 变为 1,原点位于左下角,因此您从图形的右上角开始制作一个宽度和高度为 1 的矩形。你可能想要做ax = fig.add_axes([0,0,1,1]).

我不确定为什么内联图不尊重您放置轴的位置。如果我不得不猜测,我会说内联后端会自动计算出边界框并根据它放置内联图形。

于 2013-10-09T15:22:26.397 回答