2024-04-27 04:01:32 发布
网友
当我使用show()绘制X中的图时,这些图看起来非常好。但是当我开始使用savefig()来生成大量的图时,savefig()生成的图 '字体、线条、多边形看起来都比show()生成的图形小。我的环境是Ubuntu,show()的后端是Qt4Agg。如何使show()图和savefig()图看起来一致?
show()
X
savefig()
Qt4Agg
老问题,但显然谷歌喜欢它,所以我想我把答案放在这里后,对这个问题的一些研究。
如果从头开始创建地物,可以在创建时为其提供大小选项:
import matplotlib.pyplot as plt fig = plt.figure(figsize=(3, 6)) plt.plot(range(10)) #plot example plt.show() #for control fig.savefig('temp.png', dpi=fig.dpi)
figsize(width,height)调整绘图的绝对尺寸,有助于确保两个绘图看起来相同。
如另一个答案中所述,dpi选项影响文本的相对大小和行上笔划的宽度等。使用选项dpi=fig.dpi确保show()和savefig()的相对大小相同。
或者,可以在创建后使用以下命令更改图形大小:
fig.set_size_inches(3, 6, forward=True)
forward允许动态更改大小。
如果在创建的图像中遇到过大边框的问题,可以使用以下方法调整这些边框:
plt.tight_layout() #or: plt.tight_layout(pad=2)
或:
fig.savefig('temp.png', dpi=fig.dpi, bbox_inches='tight') #or: fig.savefig('temp.png', dpi=fig.dpi, bbox_inches='tight', pad_inches=0.5)
第一个选项只是最小化布局和边框,第二个选项允许手动调整边框一点。这些技巧至少帮助我解决了不同savefig()和show()图像的问题。
savefig为保存的图形指定DPI(如果未在.matplotlibrc中指定,则默认值为100,请查看^{} kwarg to ^{})。它不是从原始人物的DPI中提取的。
savefig
DPI会影响文本的相对大小和行上笔划的宽度等。如果希望内容看起来相同,请将fig.dpi传递到fig.savefig。
fig.dpi
fig.savefig
例如
import matplotlib.pyplot as plt fig = plt.figure() plt.plot(range(10)) fig.savefig('temp.png', dpi=fig.dpi)
您将matplotlib绘图呈现到不同的设备(例如,通过石英在屏幕上显示,而使用不同的函数(plot与savefig)通过pdf文件显示,它们的参数几乎相同,然而,对于这两个函数,这些参数的默认值并不相同。
换句话说,savefig默认参数与默认的显示参数不同。
如果在matplotlib配置文件中执行此操作,则对齐它们很简单。模板文件包含在源包中,名为matplotlibrc.template。如果在安装matplotlib时未创建模板,则可以从matplotlib源或matplotlib website获取此模板。
按照所需方式自定义此文件后,将其重命名为matplotlibrc(无扩展名),并将其保存到主目录中的目录.matplotlib(注意前导“.”)。
保存图形的配置参数从提供的matplotlibrc.template中的第314行开始(本节前面的第一行是:保存图形)。
特别是,您将需要查看以下内容:
savefig.dpi : 100 # figure dots per inch savefig.facecolor : white # figure facecolor when saving savefig.edgecolor : white # figure edgecolor when saving savefig.extension : auto # what extension to use for savefig('foo'), or 'auto'
下面是字体类型和各种图像格式特定参数的设置。
对于display,即PLT.show(),这些相同的参数从matplotlibrc.template中的第277行a开始(本节前面有一行:####图):
figure.figsize : 8, 6 figure.dpi : 80 figure.facecolor : 0.75 figure.edgecolor : white
通过比较这两个参数块的值可以看到,对于savefig和display(show),同一图形属性的默认设置是不同的。
老问题,但显然谷歌喜欢它,所以我想我把答案放在这里后,对这个问题的一些研究。
如果从头开始创建地物,可以在创建时为其提供大小选项:
figsize(width,height)调整绘图的绝对尺寸,有助于确保两个绘图看起来相同。
如另一个答案中所述,dpi选项影响文本的相对大小和行上笔划的宽度等。使用选项dpi=fig.dpi确保show()和savefig()的相对大小相同。
或者,可以在创建后使用以下命令更改图形大小:
forward允许动态更改大小。
如果在创建的图像中遇到过大边框的问题,可以使用以下方法调整这些边框:
或:
第一个选项只是最小化布局和边框,第二个选项允许手动调整边框一点。这些技巧至少帮助我解决了不同savefig()和show()图像的问题。
savefig
为保存的图形指定DPI(如果未在.matplotlibrc中指定,则默认值为100,请查看^{DPI会影响文本的相对大小和行上笔划的宽度等。如果希望内容看起来相同,请将
fig.dpi
传递到fig.savefig
。例如
您将matplotlib绘图呈现到不同的设备(例如,通过石英在屏幕上显示,而使用不同的函数(plot与savefig)通过pdf文件显示,它们的参数几乎相同,然而,对于这两个函数,这些参数的默认值并不相同。
换句话说,savefig默认参数与默认的显示参数不同。
如果在matplotlib配置文件中执行此操作,则对齐它们很简单。模板文件包含在源包中,名为matplotlibrc.template。如果在安装matplotlib时未创建模板,则可以从matplotlib源或matplotlib website获取此模板。
按照所需方式自定义此文件后,将其重命名为matplotlibrc(无扩展名),并将其保存到主目录中的目录.matplotlib(注意前导“.”)。
保存图形的配置参数从提供的matplotlibrc.template中的第314行开始(本节前面的第一行是:保存图形)。
特别是,您将需要查看以下内容:
下面是字体类型和各种图像格式特定参数的设置。
对于display,即PLT.show(),这些相同的参数从matplotlibrc.template中的第277行a开始(本节前面有一行:####图):
通过比较这两个参数块的值可以看到,对于savefig和display(show),同一图形属性的默认设置是不同的。
相关问题 更多 >
编程相关推荐