web-dev-qa-db-fra.com

Changer la résolution d'imshow dans ipython

J'utilise ipython, avec un code qui ressemble à ceci:

image = zeros(MAX_X, MAX_Y)

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

imshow(image)

Cependant, l'image résultante a toujours la même résolution, environ (250x250). Je pensais que les dimensions de l'image seraient (MAX_X x MAX_Y), mais ce n'est apparemment pas le cas. Comment puis-je faire en sorte qu'ipython me donne une image avec une plus grande résolution?

15
Max Beikirch

La hauteur et la largeur de l'image affichée à l'écran sont contrôlées par la taille figure et la taille axes .

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

Haches

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

Les tableaux de données plus grands seront affichés à la même taille que les tableaux plus petits, mais le nombre d'éléments individuels sera plus grand de sorte qu'en ce sens, ils ont une résolution plus élevée. La résolution en points par pouce d'une figure enregistrée peut être contrôlée avec l'argument dpi à savefig .

Voici un exemple qui pourrait le rendre plus clair:

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

La taille des axes dans une figure peut être contrôlée de plusieurs manières. J'ai utilisé sous-intrigue ci-dessus. Vous pouvez également ajouter directement un axe avec axes ou avec gridspec .

22
Molly

Vous recherchez probablement pcolormesh plutôt que imshow. Le premier a pour but de tracer des données dans l'espace, pixel par pixel, plutôt que de montrer une image.

1
Bzazz