在ipython中更改imshow的分辨率

时间:2014-06-12 13:00:42

标签: python matplotlib ipython ipython-notebook

我正在使用ipython,代码如下:

image = zeros(MAX_X, MAX_Y)

# do something complicated to get the pixel values...
# pixel values are now in [0, 1].

imshow(image)

但是,生成的图像始终具有相同的分辨率,大约为(250x250)。我认为图像的尺寸是(MAX_X x MAX_Y),但看起来并非如此。如何让ipython为我提供更高分辨率的图像?

2 个答案:

答案 0 :(得分:18)

屏幕上显示图像的高度和宽度由figure尺寸和axes尺寸控制。

figure(figsize = (10,10)) # creates a figure 10 inches by 10 inches

Axes

axes([0,0,0.7,0.6]) # add an axes with the position and size specified by 
                    # [left, bottom, width, height] in normalized units. 

较大的数据数组将以与较小数组相同的大小显示,但单个元素的数量将更大,因此从这个意义上说它们具有更高的分辨率。可以使用savefig的dpi参数控制已保存图形的每英寸点数的分辨率。

这是一个可能更清晰的例子:

import matplotlib.pyplot as plt
import numpy as np

fig1 = plt.figure() # create a figure with the default size 

im1 = np.random.rand(5,5)
ax1 = fig1.add_subplot(2,2,1) 
ax1.imshow(im1, interpolation='none')
ax1.set_title('5 X 5')

im2 = np.random.rand(100,100)
ax2 = fig1.add_subplot(2,2,2)
ax2.imshow(im2, interpolation='none')
ax2.set_title('100 X 100')

fig1.savefig('example.png', dpi = 1000) # change the resolution of the saved image

images of different sized arrays

# change the figure size
fig2 = plt.figure(figsize = (5,5)) # create a 5 x 5 figure 
ax3 = fig2.add_subplot(111)
ax3.imshow(im1, interpolation='none')
ax3.set_title('larger figure')

plt.show()

Larger sized figuer

图中轴的大小可以通过多种方式控制。我上面使用了subplot。您还可以使用axesgridspec直接添加轴。

答案 1 :(得分:1)

您可能正在寻找pcolormesh而不是imshow。前者的目的是逐个像素地将数据绘制到空间中,而不是显示图像。