141 votes

Masquer les valeurs des axes mais conserver les étiquettes des tics des axes dans matplotlib

J'ai cette image :

plt.plot(sim_1['t'],sim_1['V'],'k')
plt.ylabel('V')
plt.xlabel('t')
plt.show()

enter image description here

Je veux cacher les chiffres ; si j'utilise :

plt.axis('off')

...j'obtiens cette image :

enter image description here

Il cache également les étiquettes, V et t . Comment puis-je conserver les étiquettes tout en masquant les valeurs ?

201voto

tom Points 25939

Si vous utilisez le programme matplotlib approche orientée objet il s'agit d'une tâche simple utilisant ax.set_xticklabels() et ax.set_yticklabels() :

import matplotlib.pyplot as plt

# Create Figure and Axes instances
fig,ax = plt.subplots(1)

# Make your plot, set your axes labels
ax.plot(sim_1['t'],sim_1['V'],'k')
ax.set_ylabel('V')
ax.set_xlabel('t')

# Turn off tick labels
ax.set_yticklabels([])
ax.set_xticklabels([])

plt.show()

17 votes

Cela fonctionne très bien pour enlever les étiquettes de tiques, mais vous avez toujours les marques de tiques...

3 votes

Pour supprimer les coches, ajoutez également ax.set_yticks([]) .

111voto

Noel Evans Points 939

Sans un subplots vous pouvez universellement enlever les tiques comme ceci :

plt.xticks([])
plt.yticks([])

0 votes

Cela supprime à la fois les marques de coche et les étiquettes de coche - exactement ce que je voulais !

58voto

MRT Points 38

Cela fonctionne très bien. Il suffit de coller ceci avant plt.show() :

plt.gca().axes.get_yaxis().set_visible(False)

Boom.

2 votes

Merci, cela fonctionne très bien. Dans les autres cas, les ticks sont préservés (parce que la direction du tick est sortie par défaut).

0 votes

Contrairement à des réponses comme ax.set_xticklabels([]), celle-ci fonctionne parfaitement pour le cas suivant : on utilise des sous-plots avec l'option sharex et on veut supprimer les ticks seulement pour un des sous-plots.

0 votes

Super ! Et plt.gca().axes.get_xaxis().set_visible(False) pour également se débarrasser des étiquettes et des tics de l'axe des x.

6voto

Ruslan S. Points 161

Pour enlever les tickmarks entièrement utilisés :

ax.set_yticks([])
ax.set_xticks([])

sinon ax.set_yticklabels([]) et ax.set_xticklabels([]) gardera des marque-pages.

0 votes

Quand j'essaie ax.set_yticks([], []) j'obtiens l'avertissement suivant : "MatplotlibDeprecationWarning : Passing the minor parameter of set_xticks() positionally is deprecated since Matplotlib 3.2 ; the parameter will become keyword-only two minor releases later." Quelle est la bonne alternative ?

0 votes

@RylanSchaeffer, dans votre exemple ax.set_yticks([], []) vous passez 2 listes vides ce qui provoque une erreur. Pourquoi faire cela ? Consultez le manuel de la commande. Si le premier argument ne doit pas être passé en position, passez-le avec le mot-clé : ax.set_yticks(ticks=[]) .

3voto

Nic Scozzaro Points 742

plt.gca().axes.yaxis.set_ticklabels([])

enter image description here

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X