2014-09-16 2 views
21

Je le code suivant:Désactiver axes dans des intrigues secondaires

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() 

Cependant, le résultat est assez laid à cause des valeurs sur les axes:

enter image description here

Comment puis-je désactiver valeurs d'axes pour toutes les sous-placettes simultanément?

+0

Quel est le problème avec http://stackoverflow.com/questions/9295026/matplotlib-plots-removing-axis-legends-and-white-spaces? Aussi, pouvez-vous rendre votre code exécutable? – Veedrac

+0

Le problème que l'axe ne rend invisible que la dernière sous-placette. –

Répondre

39

Vous pouvez tourner les axes hors en suivant les conseils donnés dans le commentaire de Veedrac (lien vers here) avec une petite modification.

Plutôt que d'utiliser plt.axis('off'), vous devez utiliser ax.axis('off')ax est un objet matplotlib.axes. Pour ce faire, votre code de simple besoin d'ajouter axarr[0,0].axis('off') et ainsi de suite pour chacun de vos intrigues secondaires.

Le code ci-dessous montre le résultat (je l'ai enlevé la partie prune_matrix parce que je n'ai pas accès à cette fonction, à l'avenir s'il vous plaît soumettre un code entièrement fonctionnel.)

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

note: Pour désactiver uniquement l'axe x ou y, vous pouvez utiliser set_visible() par exemple:

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