web-dev-qa-db-fra.com

Python cache les ticks mais affiche les étiquettes de ticks

Je peux enlever les tiques avec

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

mais cela supprime également les étiquettes. De toute façon, je peux tracer les étiquettes des tiques, mais pas les tiques et l'épine

27
user308827

Vous pouvez définir la longueur de tick à 0 avec tick_params ( http://matplotlib.org/api/axes_api.html#matplotlib.axes.Axes.tick_params ):

fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot([1],[1])
ax.tick_params(axis=u'both', which=u'both',length=0)
plt.show()
53
Julien Spronck

Merci pour vos réponses @ julien-spronck et @cmidi.
En note, je devais utiliser les deux méthodes pour que cela fonctionne:

import numpy as np
import matplotlib.pyplot as plt

fig, (ax1, ax2, ax3) = plt.subplots(1, 3, figsize=(11, 3))

data = np.random.random((4, 4))

ax1.imshow(data)
ax1.set(title='Bad', ylabel='$A_y$')
# plt.setp(ax1.get_xticklabels(), visible=False)
# plt.setp(ax1.get_yticklabels(), visible=False)
ax1.tick_params(axis='both', which='both', length=0)

ax2.imshow(data)
ax2.set(title='Somewhat OK', ylabel='$B_y$')
plt.setp(ax2.get_xticklabels(), visible=False)
plt.setp(ax2.get_yticklabels(), visible=False)
# ax2.tick_params(axis='both', which='both', length=0)

ax3.imshow(data)
ax3.set(title='Nice', ylabel='$C_y$')
plt.setp(ax3.get_xticklabels(), visible=False)
plt.setp(ax3.get_yticklabels(), visible=False)
ax3.tick_params(axis='both', which='both', length=0)

plt.show()

 Outcome of the code with desired labels

12
mab

matplotlib.pyplot.setp(*args, **kwargs) est utilisé pour définir les propriétés d'un objet d'artiste. Vous pouvez utiliser ceci en plus de get_xticklabes() pour le rendre invisible.

quelque chose sur les lignes de ce qui suit

import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(2,1,1)
ax.set_xlabel("X-Label",fontsize=10,color='red')
plt.setp(ax.get_xticklabels(),visible=False)

Ci-dessous se trouve la page de référence http://matplotlib.org/api/pyplot_api.html

3
cmidi

Alors que je suivais un cours sur Python, c'était une question.

Vous trouverez ci-dessous la solution proposée, que je pense plus lisible et intuitive. 

ax.tick_params(top='off', bottom='off', left='off', right='off', labelleft='on', labelbottom='on')
3
Marcus

Vous pouvez définir les propriétés yaxis et xaxisset_ticks_position afin qu’elles ne s'affichent que sur les côtés gauche et inférieur, respectivement.

ax.yaxis.set_ticks_position('left')
ax.xaxis.set_ticks_position('bottom')

En outre, vous pouvez également masquer les épines en définissant la propriété set_visible de l’épine spécifique sur False

axes[i].spines['right'].set_visible(False)
axes[i].spines['top'].set_visible(False)
1
Marcelo Villa