python – 强制pyplot.imshow()生成更高分辨率的图像

我有一个NxN数组,我正在使用matplotlib.pyplot.imshow()在
Python中绘图. N将非常大,我希望我的最终图像具有匹配的分辨率.但是,在随后的代码中,图像分辨率似乎没有随着N的增加而改变.我认为imshow()(至少我是如何使用它)具有固定的最小像素大小,该大小比显示具有全分辨率的NxN阵列所需的大.

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import cm

array = np.loadtxt("output.dat",unpack=True)
plt.figsize=(30.0, 30.0)
im = plt.imshow(array,cmap='hot')
plt.colorbar(im)
plt.savefig("mandelbrot.pdf")

正如你在上面的代码中看到的那样,我已经尝试过使用plt.figsize来尝试提高分辨率,但无济于事.我也尝试了各种输出格式(.pdf,.ps,.eps,.png),但这些都生成了比我想要的分辨率更低的图像. .ps,.eps和.pdf图像看起来完全相同.

首先,我的问题是否存在于imshow()中,还是我的代码的某些其他方面需要更改才能生成更高分辨率的图像?

其次,如何生成更高分辨率的图像?

最佳答案 plt.figsize()只会在保持默认dpi的同时以英寸为单位更改图形的大小.保存图形时,可以通过传递dpi关键字参数来设置图形的分辨率:

    fig.savefig('filename.extension', dpi=XXX)

因此,如果您的数字大小为4×6并使用dpi = 300保存,则最终会得到1200×1800分辨率的图像.

您还可以使用matplotlibrc设置默认数字大小和dpi.

点赞