我已经使用matplotlib绘制了一些实验结果(在此处对此进行了讨论:Looping over files and plotting。但是,通过单击图像右侧保存图片会产生非常糟糕的质量/低分辨率图像。
from glob import glob
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
# loop over all files in the current directory ending with .txt
for fname in glob("./*.txt"):
# read file, skip header (1 line) and unpack into 3 variables
WL, ABS, T = np.genfromtxt(fname, skip_header=1, unpack=True)
# first plot
plt.plot(WL, T, label='BN', color='blue')
plt.xlabel('Wavelength (nm)')
plt.xlim(200,1000)
plt.ylim(0,100)
plt.ylabel('Transmittance, %')
mpl.rcParams.update({'font.size': 14})
#plt.legend(loc='lower center')
plt.title('')
plt.show()
plt.clf()
# second plot
plt.plot(WL, ABS, label='BN', color='red')
plt.xlabel('Wavelength (nm)')
plt.xlim(200,1000)
plt.ylabel('Absorbance, A')
mpl.rcParams.update({'font.size': 14})
#plt.legend()
plt.title('')
plt.show()
plt.clf()
我正在寻找的示例图表:example graph
答案 0 :(得分:48)
您可以使用savefig()
导出到图像文件:
plt.savefig('filename.png')
此外,您可以将dpi
参数指定为某个标量值,例如:
plt.savefig('filename.png', dpi=300)
答案 1 :(得分:13)
您可以将图表另存为svg以获得无损质量:
import matplotlib.pylab as plt
x = range(10)
plt.figure()
plt.plot(x,x)
plt.savefig("graph.svg")
答案 2 :(得分:11)
在plt.figure(dpi=1200)
之前使用plt.plot...
,最后使用plt.savefig(...
,请参阅:http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.figure
和
http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.savefig
答案 3 :(得分:6)
对于将来尝试从matplotlib中保存高分辨率图像时发现此问题的读者,我已经尝试了上面和其他地方的一些答案,并将其总结在这里。
最佳结果:plt.savefig('filename.pdf')
,然后在命令行上将此pdf转换为png,以便可以在powerpoint中使用它:
pdftoppm -png -r 300 filename.pdf filename
或者简单地打开pdf并裁剪到Adobe中所需的图像,另存为png并将图片导入到powerpoint
测试#1失败:plt.savefig('filename.png', dpi=300)
这确实将图像保存为比正常分辨率高一点的图像,但是对于发布或某些演示文稿而言,图像的高度不够。当近距离观看时,使用高达2000的dpi值仍会产生模糊的图像。
测试#2失败:plt.savefig('filename.pdf')
无法与Microsoft幻灯片一样在Microsoft Office Professional Plus 2016中打开(因此没有PowerPoint)。
测试#3失败:plt.savefig('filename.svg')
此问题也无法在PowerPoint或Google幻灯片中打开,并且存在与上述相同的问题。
#4测试失败:plt.savefig('filename.pdf')
,然后在命令行上转换为png:
convert -density 300 filename.pdf filename.png
但是当近距离观察时仍然太模糊了。
测试#5失败:plt.savefig('filename.pdf')
并在GIMP中打开,并导出为高质量png(文件大小从〜100 KB增加到〜75 MB)
测试#6失败:plt.savefig('filename.pdf')
,然后在命令行上转换为jpeg:
pdfimages -j filename.pdf filename
这不会产生任何错误,但即使更改了多个参数,也没有在Ubuntu上产生输出。
答案 4 :(得分:2)
用于保存图形:
matplotlib.rcParams['savefig.dpi'] = 300
使用plt.show()
时显示图形:
matplotlib.rcParams["figure.dpi"] = 100
只需将它们添加到顶部
答案 5 :(得分:0)
在 for()循环结束时,您可以使用savefig()
函数代替 plt.show()并设置名称dpi和你的形象的格式。
E.g。 1000 dpi和eps格式是非常好的质量,如果你想保存文件夹 ./ 的每张图片,名称为“Sample1.eps”,“Sample2.eps”等,你可以添加以下代码:
for fname in glob("./*.txt"):
# Your previous code goes here
[...]
plt.savefig("./{}.eps".format(fname), bbox_inches='tight', format='eps', dpi=1000)