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

Force pyplot.imshow() to produce image with higher 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() 是否存在我的问题,或者我的代码是否有其他方面需要更改以生成更高分辨率的图像?

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

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

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

因此,如果您的图形尺寸为 4x6 并使用 dpi=300 保存,您最终会得到分辨率为 1200x1800 的图像。

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