web-dev-qa-db-fra.com

Désactive les axes dans les intrigues secondaires

J'ai le code suivant:

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 moche à cause des valeurs sur les axes:

enter image description here

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

36
Sergey Ivanov

Vous pouvez désactiver les axes en suivant les conseils du commentaire de Veedrac (en reliant ici ) 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, vous devez simplement ajouter axarr[0,0].axis('off') et ainsi de suite pour chacune de vos sous-parcelles.

Le code ci-dessous montre le résultat (j'ai supprimé la partie Prune_matrix Car je n'ai pas accès à cette fonction, à l'avenir, veuillez soumettre du code pleinement opérationnel. )

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

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

axarr[0,0].xaxis.set_visible(False) # Hide only x axis
71
Ffisegydd
import matplotlib.pyplot as plt

fig, ax = plt.subplots(2, 2)


Pour désactiver les axes pour toutes les sous-parcelles, effectuez l'une des opérations suivantes:

[axi.set_axis_off() for axi in ax.ravel()]

ou

map(lambda axi: axi.set_axis_off(), ax.ravel())
5
Nirmal