2012-05-10 12 views
35

Sto provando a visualizzare una matrice numpy usando imshow() poiché è simile a imagesc() in Matlab.figura di imshow() è troppo piccola

imshow(random.rand(8, 90), interpolation='nearest') 

La figura risultante è molto piccola al centro della finestra grigia, mentre la maggior parte dello spazio non è occupato. Come posso impostare i parametri per ingrandire la figura? Ho provato figsize = (xx, xx) e non è quello che voglio. Grazie!

risposta

64

Se non si danno una aspect argomento per imshow, userà il valore per image.aspect nella vostra matplotlibrc. L'impostazione predefinita per questo valore in un nuovo matplotlibrc è equal. Quindi, imshow traccerà la matrice con proporzioni uguali.

Se non avete bisogno di un aspetto uguale è possibile impostare aspect a auto

imshow(random.rand(8, 90), interpolation='nearest', aspect='auto') 

che ha pronunciato la seguente figura

imshow-auto

Se si desidera un rapporto di formato uguale bisogna adattare il tuo secondo l'aspetto

fig, ax = subplots(figsize=(18, 2)) 
ax.imshow(random.rand(8, 90), interpolation='nearest') 
tight_layout() 

che ti dà:

imshow-equal

7

Questo è strano, è sicuramente funziona per me:

figure(figsize = (20,2)) 
imshow(random.rand(8, 90), interpolation='nearest') 

Sto usando il backend "MacOSX", btw.

0

Sono nuovo anche per Python. Ecco qualcosa che sembra farà quello che vuoi

axes([0.08, 0.08, 0.94-0.08, 0.94-0.08]) #[left, bottom, width, height] 
axis('scaled')` 

Credo che questo decida la dimensione della tela.

Problemi correlati