目前,我正在大量使用ipython-notebook进行数值分析和数据绘制。在准备出版物质量图的过程中,需要进行很多调整以使布局正确,但是我无法使用ipython / matplotlib向我展示要在浏览器中保存的内容。使该过程比原本要痛苦的多,因为我必须继续打开新的输出文件进行检查。有没有一种方法可以使以嵌入式方式显示的图像与保存的图像相同?如下示例,facecolor ='gray'为清楚起见:import matplotlib.pyplot as pltimport numpy as np%matplotlib inlinefig = plt.figure(figsize=(6,4),facecolor='gray')ax = fig.add_axes([0.1, 0.1, 0.8, 0.8])x = np.linspace(0,2*np.pi,1000)y = np.sin(x)ax.plot(x,y,label=r'$\sin(x)$')ax.set_xlim(0,2*np.pi)ax.set_ylim(-1.2,1.2)ax.set_xlabel(r'$x$')ax.set_ylabel(r'$y$')ax.legend(loc='upper right', frameon=False)fig.savefig('mypath.png',dpi=300, facecolor='gray')plt.show()请注意,此处我已明确选择了轴尺寸,以使它们与生成的图像的两侧等距。这在保存的图像中得到尊重,但在笔记本中显示的图像中被忽略:
5 回答

不负相思意
TA贡献1777条经验 获得超10个赞
正如@andrew所指出的,bbox_inches='tight'默认情况下,ipython魔术是强制执行的。如ipython文档中所述,可以使用其他魔术方法来覆盖它:
%matplotlib inline
%config InlineBackend.print_figure_kwargs = {'bbox_inches':None}
产生与savefig产生的内联图像相同的内联图像。

紫衣仙女
TA贡献1839条经验 获得超15个赞
内联显示魔术似乎具有其自身的一些默认值,并且不一定要遵循rcparams。(大概是为所有plt.savefig args缓存值,因此在每次调用时都覆盖rcparams中的任何内容。)我发布了一个答案,并带有指向相关ipython文档的链接。
添加回答
举报
0/150
提交
取消