python 如何绘制高分辨率图形

vptzau2j  于 2023-06-04  发布在  Python
关注(0)|答案(7)|浏览(498)

我已经使用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

sycxhyv7

sycxhyv71#

您可以使用savefig()导出到图像文件:

plt.savefig('filename.png')

此外,您可以将dpi参数指定为某个标量值,例如:

plt.savefig('filename.png', dpi=300)
kgqe7b3p

kgqe7b3p2#

在所有plt.plot...之前使用plt.figure(dpi=1200),最后使用plt.savefig(...)

vxf3dgd4

vxf3dgd43#

对于将来的读者谁发现这个问题,而试图从matplotlib保存高分辨率图像,因为我是,我已经尝试了一些答案以上和其他地方,并总结在这里。

最佳结果plt.savefig('filename.pdf')

然后在命令行中将此pdf转换为png,以便您可以在powerpoint中使用它:
pdftoppm -png -r 300 filename.pdf filename
或者简单地打开PDF并在Adobe中裁剪到您需要的图像,保存为PNG并将图片导入PowerPoint

不太成功的测试#1plt.savefig('filename.png', dpi=300)

这确实会以比正常分辨率稍高的分辨率保存图像,但对于出版物或某些演示文稿来说,它还不够高。使用高达2000的dpi值仍然会在近距离观看时产生模糊的图像。

不太成功的测试#2plt.savefig('filename.pdf')

这无法在Microsoft Office Professional Plus 2016中打开(因此没有PowerPoint),与Google Slides相同。

不太成功的测试#3plt.savefig('filename.svg')

这也无法在PowerPoint或Google Slides中打开,与上述问题相同。

不太成功的测试#4plt.savefig('filename.pdf')

然后在命令行上转换为png:
convert -density 300 filename.pdf filename.png
但这在近距离观察时仍然太模糊。

不太成功的测试#5plt.savefig('filename.pdf')

并在GIMP中打开,并导出为高质量的png(将文件大小从约100 KB增加到约75 MB)

不太成功的测试#6plt.savefig('filename.pdf')

然后在命令行上转换为jpeg:
pdfimages -j filename.pdf filename
这没有产生任何错误,但即使在更改了几个参数后,也没有在Ubuntu上产生输出。

edqdpe6u

edqdpe6u4#

您可以将图形保存为svg以获得无损质量:

import matplotlib.pylab as plt

x = range(10)

plt.figure()
plt.plot(x,x)
plt.savefig("graph.svg")
kzmpq1sx

kzmpq1sx5#

保存图表:
matplotlib.rcParams['savefig.dpi'] = 300
使用plt.show()时显示图形:
matplotlib.rcParams["figure.dpi"] = 100
把它们加在最上面就行了

baubqpgj

baubqpgj6#

for() 循环结束时,可以使用savefig()函数代替 * plt.show()*,并设置图形的名称、dpi和格式。
例如,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)
8hhllhi2

8hhllhi27#

在我看来,最好的方法是使用%matplotlib notebook魔术函数。
我已经尝试了所有上述方法和缺点,增加dpi的是,数字大小或说,绘图窗口大小得到增加与它,这是不希望的。
如果您正在寻找获得最佳分辨率在您的数字大小没有调整dpi,去为魔术功能。
您还可以通过单击图上的按钮来关闭图的交互。

相关问题