Matplotlib - 如何绘制高分辨率图?

esi*_*lik 46 python matplotlib

我已经使用matplotlib来绘制一些实验结果(在这里讨论它:循环文件和绘图.但是,通过单击图像右侧保存图片会产生非常糟糕的质量/低分辨率图像.

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()
Run Code Online (Sandbox Code Playgroud)

我正在寻找的示例图:示例图

Oha*_*tan 69

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

plt.savefig('filename.png')
Run Code Online (Sandbox Code Playgroud)

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

plt.savefig('filename.png', dpi=300)
Run Code Online (Sandbox Code Playgroud)

  • 确保将 savefig 放在 plt.show() 之前。否则,您保存的图像将是空白的。 (15认同)
  • 这会在图形周围添加一堆空白,为了解决这个问题,我必须将 `bbox_inches="tight"` 添加到 `plt.savefig()` (4认同)
  • 除了他需要更高的分辨率,因此您需要设置dpi = some_value (3认同)

Chr*_*itz 19

对于在尝试从 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),与谷歌幻灯片相同。

不太成功的测试#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 上产生输出。


Oph*_*rmi 16

在使用plt.figure(dpi=1200)之前plt.plot...和最后使用时plt.savefig(...请参阅:http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.figurehttp://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.savefig

  • 太棒了,这对我有用!现在我的地块是 4K XD (2认同)

JMa*_*Mat 15

您可以将图表另存为svg以获得无损质量:

import matplotlib.pylab as plt

x = range(10)

plt.figure()
plt.plot(x,x)
plt.savefig("graph.svg")
Run Code Online (Sandbox Code Playgroud)

  • 你也可以保存为 PDF `plt.savefig("graph.pdf")` 这也是无损的 (8认同)

Jas*_*son 6

保存图形:

matplotlib.rcParams['savefig.dpi'] = 300

用于在使用时显示图形plt.show()

matplotlib.rcParams["figure.dpi"] = 100

只需将它们添加到顶部

  • 最后,关于显示高分辨率图形而不是保存高分辨率图形的答案。当您想要显示预先保存的图形而无需再次绘制和保存数据时,这非常有用。 (5认同)