我已经使用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
7条答案
按热度按时间sycxhyv71#
您可以使用
savefig()
导出到图像文件:此外,您可以将
dpi
参数指定为某个标量值,例如:kgqe7b3p2#
在所有
plt.plot...
之前使用plt.figure(dpi=1200)
,最后使用plt.savefig(...)
。vxf3dgd43#
对于将来的读者谁发现这个问题,而试图从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 Office Professional Plus 2016中打开(因此没有PowerPoint),与Google Slides相同。
不太成功的测试#3:
plt.savefig('filename.svg')
这也无法在PowerPoint或Google Slides中打开,与上述问题相同。
不太成功的测试#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上产生输出。
edqdpe6u4#
您可以将图形保存为svg以获得无损质量:
kzmpq1sx5#
保存图表:
matplotlib.rcParams['savefig.dpi'] = 300
使用
plt.show()
时显示图形:matplotlib.rcParams["figure.dpi"] = 100
把它们加在最上面就行了
baubqpgj6#
在 for() 循环结束时,可以使用
savefig()
函数代替 * plt.show()*,并设置图形的名称、dpi和格式。例如,1000 dpi和eps格式是相当好的质量,如果你想将每张图片保存在文件夹 ./ 中,名称为“Sample1.eps”,“Sample2.eps”等。你可以添加以下代码:
8hhllhi27#
在我看来,最好的方法是使用
%matplotlib notebook
魔术函数。我已经尝试了所有上述方法和缺点,增加dpi的是,数字大小或说,绘图窗口大小得到增加与它,这是不希望的。
如果您正在寻找获得最佳分辨率在您的数字大小没有调整dpi,去为魔术功能。
您还可以通过单击图上的按钮来关闭图的交互。