Python matplotlib,savefig:忽略DPI设置

Python matplotlib,savefig:忽略DPI设置,python,matplotlib,show,dpi,Python,Matplotlib,Show,Dpi,我找不到其他有这个问题的人。在matplotlib中,可以使用show()或savefig()查看绘图。这些生成的图像略有不同;在我的例子中,savefig()图像更难看,更难理解。我需要让我的考官过得轻松,所以 我发现一些主题建议我将DPI大小设置为与show()的大小匹配。我试过: ->直接使用matplotlib.rcParams['savefig.dpi']=80设置savefig.dpi ->直接在~/.matplotlib/matplotlibrc中设置savefig.dpi ->正

我找不到其他有这个问题的人。在matplotlib中,可以使用show()或savefig()查看绘图。这些生成的图像略有不同;在我的例子中,savefig()图像更难看,更难理解。我需要让我的考官过得轻松,所以

我发现一些主题建议我将DPI大小设置为与show()的大小匹配。我试过:

->直接使用matplotlib.rcParams['savefig.dpi']=80设置savefig.dpi

->直接在~/.matplotlib/matplotlibrc中设置savefig.dpi

->正在将我的rc文件移动到CWD

->最后,使用savefig('image.pdf',dpi=80)

我可以验证属性是否确实已设置;但似乎savefig()已禁用该设置。有人能帮忙吗

(简化)代码:


PDF保存将DPI设置用于PDF内部的图像分辨率,而不是任何直线/多边形分辨率(在矢量格式中没有意义)


如果您对屏幕上的输出感到满意,并且不需要有可缩放的图形,则保存为
png
可能没问题。

matplotlib
以矢量格式保存
pdf
文件。除非你有位图图像,否则DPI在矢量图像中是毫无意义的,因为它们与分辨率无关。啊哈,我明白了。因此,无法使用savefig()保存pdf图像,以便它们与您可以使用show()手动保存的图像相同?它们应该相同。唯一的区别可能是在保存图形之前调整其大小。但是你也可以设置你的体形的大小(
figure((宽度,高度))
)并且
savefig
会使用它。是的,就是这样。非常感谢,为我节省了许多宝贵的时间:)但请注意,如果您使用了
contourf
(例如),您的pdf/svg中会有一个光栅图像,因此dpi再次有意义。@ChrisH-我不同意。Contourf生成矢量输出,而不是光栅输出。然而,imshow确实会生成一个图像,因此(从内存中)存在一个图像dpi来辅助。HTHit证明你是对的——根据我的5.5Mb.svg,它将inkscape减慢到绝对爬行。然后,dpi设置有助于获得轴和重叠线的正确线宽。我不久前就意识到了这一点,但忘记了登录和更新。
plt.bar(ind, functimes, yerr=stddev, bottom=0, width=barWidth, align='center', color='b')

ax = plt.gca()
ax.legend(barRcts, barLegend)
plt.title("Function Call Overhead")
plt.xlabel("Function ID")
plt.ylabel("Execution Time [us]")

plt.xticks(ind, funcNames)
figtest.autofmt_xdate()

plt.savefig(out_file, dpi=80, format='pdf')