我正在尝试将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笔记本中的内联视图看起来不错:
文件' test.png'虽然几乎是空的。看起来情节转移到右上方,你可以看到刻度标签' 1.0'和' 0.0'在角落。
如何从iPython笔记本生成一个看起来像内联视图的文件?
答案 0 :(得分:21)
问题解决了:向savefig添加'bbox_inches='tight'
参数。
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笔记本内联文件。耶。
答案 1 :(得分:5)
实际上,savefig
正常运作。当您致电add_axes
时,您的列表会指定一个矩形:[left, bottom, width, height]
。由于图形在两个轴上从0到1,原点位于左下角,因此从图的最右上角开始制作宽度和高度为1的矩形。你可能想做ax = fig.add_axes([0,0,1,1])
。
我不确定为什么内联图不会影响您放置轴的位置。如果我不得不猜测,我会说内联后端会自动计算出边界框并根据该位置放置内联图。