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

目前,我正在大量使用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()

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


慕码人2483693
浏览 591回答 5
5回答

不负相思意

正如@andrew所指出的,bbox_inches='tight'默认情况下,ipython魔术是强制执行的。如ipython文档中所述,可以使用其他魔术方法来覆盖它:%matplotlib inline%config InlineBackend.print_figure_kwargs = {'bbox_inches':None}产生与savefig产生的内联图像相同的内联图像。

紫衣仙女

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

相关分类

Python