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