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

时间:2015-02-20 17:56:09

标签: python image matplotlib resolution

我有一个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()中,还是我的代码的某些其他方面需要更改才能生成更高分辨率的图像?

其次,如何制作更高分辨率的图像?

1 个答案:

答案 0 :(得分:7)

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

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

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

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