2012-05-10 11 views
35

Estoy tratando de visualizar una matriz numpy usando imshow() ya que es similar a imagesc() en Matlab.figura de imshow() es demasiado pequeña

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

La figura resultante es muy pequeña en el centro de la ventana gris, mientras que la mayor parte del espacio está desocupada. ¿Cómo puedo configurar los parámetros para agrandar la figura? Intenté figsize = (xx, xx) y no es lo que quiero. ¡Gracias!

Respuesta

64

Si usted no da un argumento aspect-imshow, se utilizará el valor de image.aspect en su matplotlibrc. El valor predeterminado para este valor en un nuevo matplotlibrc es equal. Así imshow trazará su matriz con la misma relación de aspecto.

Si usted no necesita un aspecto igual se puede establecer aspect a auto

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

que da la siguiente figura

imshow-auto

Si desea una relación de aspecto equivalente que tiene que adaptar su figsize según el aspecto

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

que le ofrece:

imshow-equal

7

eso es extraño, que sin duda funciona para mí:

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

estoy usando el backend "MacOSX", por cierto.

0

Soy nuevo en python también. Aquí hay algo que parece que hará lo que quieras

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

Creo que esto decide el tamaño del lienzo.