Изменить разрешение imshow в ipython

Я использую ipython с кодом, который выглядит следующим образом:

image = zeros(MAX_X, MAX_Y)

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

imshow(image)

Однако полученное изображение всегда имеет одинаковое разрешение, около 250х250. Я думал, что размеры изображения будут (MAX_X x MAX_Y), но, похоже, это не так. Как я могу заставить ipython дать мне изображение с большим разрешением?

2 ответа

Решение

Высота и ширина отображаемого изображения на экране зависит от размера фигуры и размера осей.

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

Топоры

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

Большие массивы данных будут отображаться с тем же размером, что и меньшие массивы, но число отдельных элементов будет больше, поэтому в этом смысле они имеют более высокое разрешение. Разрешение в точках на дюйм сохраненной фигуры можно контролировать с помощью аргумента dpi для savefig.

Вот пример, который может прояснить ситуацию:

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

изображения массивов разного размера

# 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()

Фигурка большего размера

Размер осей в фигуре можно контролировать несколькими способами. Я использовал сюжет выше. Вы также можете напрямую добавить оси с осями или с сеткой.

Вы, вероятно, ищете pcolormesh скорее, чем imshow, Первый имеет целью вывод данных в пространство попиксельно, а не показывать изображение.

Другие вопросы по тегам