当没有足够的分辨率显示所有数据时,matplotlib.pyplot.imshow如何“挤压”数据?

时间:2017-10-05 23:05:25

标签: python matplotlib imshow

使用matplotlib.pyplot.imshow时,假设我有一个100x100阵列,但图像分辨率只有50x50,那么数据如何转换或选择用于绘图?什么参数控制这种行为?

我能找到的只有matplotlibrc,有#image.resample : False,但我找不到有关选项的文档。 #image.interpolation会产生什么影响吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

as seen here中有几种插值方法。对于interpolation方法,它看起来像imshow() is an optional parameter

答案 1 :(得分:0)

所以我尝试了一些测试,我认为额外的数据只是被跳过而不是任何形式的转换,至少使用interpolation='none'interpolation=bilinear。注意,在某些情况下,数据点会不均匀地拉伸。 我没有足够的声誉来发布数据,但这里是代码。 (这些图需要放大才能看到)。

import matplotlib.pyplot as plt
import numpy as np

np.random.seed(1)
grid = np.random.rand(10, 10)

fig=plt.figure(figsize=(1,1),frameon=False)
plt.Axes(fig, [0., 0., 1., 1.])
plt.axis("off")
plt.subplots_adjust(left=0,right=1,bottom=0,top=1)

plt.imshow(grid,interpolation='none',cmap='jet')

plt.savefig("test_dpi15_none.png",bbox_inches=0,pad_inches=0, dpi=15)
plt.savefig("test_dpi10_none.png",bbox_inches=0,pad_inches=0, dpi=10)
plt.savefig("test_dpi5_none.png",bbox_inches=0,pad_inches=0,dpi=5)
plt.savefig("test_dpi2_none.png",bbox_inches=0,pad_inches=0,dpi=2)