Изменить разрешение 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
, Первый имеет целью вывод данных в пространство попиксельно, а не показывать изображение.