2014-06-12 3 views
9

Sto usando ipython, con un codice simile al seguente:Cambiare la risoluzione di imshow in ipython

image = zeros(MAX_X, MAX_Y) 

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

imshow(image) 

Tuttavia, l'immagine risultante è sempre la stessa risoluzione, attorno (250x250). Ho pensato che le dimensioni dell'immagine sarebbero (MAX_X x MAX_Y), ma questo non sembra essere il caso. Come posso fare in modo che ipython mi dia un'immagine con una risoluzione maggiore?

risposta

11

L'altezza e la larghezza dell'immagine visualizzata sullo schermo sono controllate dalla dimensione figure e dalla dimensione axes.

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

assi

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

ingrandita matrici di dati verranno visualizzati nello stesso formato come array piccole ma il numero di singoli elementi sarà maggiore quindi in questo senso essi hanno una maggiore risoluzione. La risoluzione in punti per pollice di una figura salvata può essere controllata con l'argomento dpi su savefig.

Ecco un esempio che potrebbe rendere più chiaro:

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

Le dimensioni degli assi di un dato può essere controllato in diversi modi. Ho usato subplot sopra. È anche possibile aggiungere direttamente un asse con axes o con gridspec.

+0

Nel primo esempio si visualizzano 2 immagini affiancate; come si modifica la dimensione dell'immagine stessa? Ad esempio, per essere più vicino al bordo della tela dell'immagine –

1

Probabilmente stai cercando pcolormesh anziché imshow. Il primo ha lo scopo di tracciare dati nello spazio, pixel per pixel, piuttosto che mostrare un'immagine.