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

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

/ 猿问

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

慕码人2483693 2019-12-06 15:16:18

目前,我正在大量使用ipython-notebook进行数值分析和数据绘制。在准备出版物质量图的过程中,需要进行很多调整以使布局正确,但是我无法使用ipython / matplotlib向我展示要在浏览器中保存的内容。使该过程比原本要痛苦的多,因为我必须继续打开新的输出文件进行检查。


有没有一种方法可以使以嵌入式方式显示的图像与保存的图像相同?


如下示例,facecolor ='gray'为清楚起见:


import matplotlib.pyplot as plt

import numpy as np

%matplotlib inline


fig = 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()

请注意,此处我已明确选择了轴尺寸,以使它们与生成的图像的两侧等距。这在保存的图像中得到尊重,但在笔记本中显示的图像中被忽略:


查看完整描述

3 回答

?
不负相思意

正如@andrew所指出的,bbox_inches='tight'默认情况下,ipython魔术是强制执行的。如ipython文档中所述,可以使用其他魔术方法来覆盖它:


%matplotlib inline

%config InlineBackend.print_figure_kwargs = {'bbox_inches':None}

产生与savefig产生的内联图像相同的内联图像。


查看完整回答
反对 2019-12-06
?
MM们

该行为是由于以下事实导致的:魔术%matplotlib inline默认bbox_inches='tight'内联渲染时使用 。


我知道您问过有关更改行为的问题plt.show(),但是,也可以更改与savefig()不使用行为的设置相同的行为。


fig.savefig('mypath.png',dpi=300, facecolor='gray',  bbox_inches='tight')


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

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

查看完整回答
反对 2019-12-06

添加回答

回复

举报

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