为了账号安全,请及时绑定邮箱和手机立即绑定

Matplotlib和Ipython-notebook:精确显示将要保存的图形

Matplotlib和Ipython-notebook:精确显示将要保存的图形

慕码人2483693 2019-12-06 15:16:18
目前,我正在大量使用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产生的内联图像相同的内联图像。


查看完整回答
反对 回复 2019-12-06
?
紫衣仙女

TA贡献1839条经验 获得超15个赞

内联显示魔术似乎具有其自身的一些默认值,并且不一定要遵循rcparams。(大概是为所有plt.savefig args缓存值,因此在每次调用时都覆盖rcparams中的任何内容。)我发布了一个答案,并带有指向相关ipython文档的链接。

查看完整回答
反对 回复 2019-12-06
  • 5 回答
  • 0 关注
  • 589 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信