2014-09-16 12 views
21

Ho il seguente codice:Spegnere assi in sottotrame

import matplotlib.pyplot as plt 
import matplotlib.image as mpimg 
import matplotlib.cm as cm 

img = mpimg.imread("lena.jpg") 

f, axarr = plt.subplots(2, 2) 
axarr[0,0].imshow(img, cmap = cm.Greys_r) 
axarr[0,0].set_title("Rank = 512") 

rank = 128 
new_img = prune_matrix(rank, img) 
axarr[0,1].imshow(new_img, cmap = cm.Greys_r) 
axarr[0,1].set_title("Rank = %s" %rank) 

rank = 32 
new_img = prune_matrix(rank, img) 
axarr[1,0].imshow(new_img, cmap = cm.Greys_r) 
axarr[1,0].set_title("Rank = %s" %rank) 

rank = 16 
new_img = prune_matrix(rank, img) 
axarr[1,1].imshow(new_img, cmap = cm.Greys_r) 
axarr[1,1].set_title("Rank = %s" %rank) 

plt.show() 

Tuttavia, il risultato è abbastanza brutto a causa dei valori sugli assi:

enter image description here

Come posso spegnere valori di assi per tutti i sottotrots contemporaneamente?

+0

Cosa c'è di sbagliato in http://stackoverflow.com/questions/9295026/matplotlib-plots-removing-axis-legends-and-white-spaces? Inoltre, puoi rendere il tuo codice eseguibile? – Veedrac

+0

Il problema che l'asse fuori rende invisibile solo l'ultimo sottotramma. –

risposta

39

È possibile disattivare gli assi seguendo il consiglio nel commento di Veedrac (collegamento a here) con una piccola modifica.

Invece di utilizzare plt.axis('off') è necessario utilizzare ax.axis('off') dove ax è un oggetto matplotlib.axes. Per fare ciò per il tuo codice, devi semplicemente aggiungere axarr[0,0].axis('off') e così via per ciascuna delle tue sottotrame.

Il codice seguente mostra il risultato (ho rimosso la parte prune_matrix perché non ho accesso a tale funzione, in futuro si prega di inviare il codice completamente funzionante.)

import matplotlib.pyplot as plt 
import matplotlib.image as mpimg 
import matplotlib.cm as cm 

img = mpimg.imread("stewie.jpg") 

f, axarr = plt.subplots(2, 2) 
axarr[0,0].imshow(img, cmap = cm.Greys_r) 
axarr[0,0].set_title("Rank = 512") 
axarr[0,0].axis('off') 

axarr[0,1].imshow(img, cmap = cm.Greys_r) 
axarr[0,1].set_title("Rank = %s" % 128) 
axarr[0,1].axis('off') 

axarr[1,0].imshow(img, cmap = cm.Greys_r) 
axarr[1,0].set_title("Rank = %s" % 32) 
axarr[1,0].axis('off') 

axarr[1,1].imshow(img, cmap = cm.Greys_r) 
axarr[1,1].set_title("Rank = %s" % 16) 
axarr[1,1].axis('off') 

plt.show() 

Stewie example

Nota: Per disattivare solo l'asse x o Y è possibile utilizzare set_visible() esempio:

axarr[0,0].xaxis.set_visible(False) # Hide only x axis 
Problemi correlati