web-dev-qa-db-fra.com

Xticks Python dans les intrigues secondaires

Si je trace une seule parcelle imshow, je peux utiliser

fig, ax = plt.subplots()
ax.imshow(data)
plt.xticks( [4, 14, 24],  [5, 15, 25] )

pour remplacer mes étiquettes xtick.

Maintenant, je trace 12 parcelles imshow en utilisant 

f, axarr = plt.subplots(4, 3)
axarr[i, j].imshow(data)

Comment puis-je changer mes xticks uniquement pour l'une de ces sous-parcelles? Je ne peux accéder aux axes des sous-parcelles avec axarr[i, j]. Comment puis-je accéder à plt pour une sous-parcelle en particulier?

45
user2926577

Il y a deux manières:

  1. Utilisez les méthodes des axes de l’objet sous-parcelle (par exemple, ax.set_xticks et ax.set_xticklabels) ou
  2. Utilisez plt.sca pour définir les axes actuels de la machine à états pyplot (à savoir l'interface plt).

À titre d'exemple (ceci illustre également l'utilisation de setp pour modifier les propriétés de toutes les sous-parcelles):

import matplotlib.pyplot as plt

fig, axes = plt.subplots(nrows=3, ncols=4)

# Set the ticks and ticklabels for all axes
plt.setp(axes, xticks=[0.1, 0.5, 0.9], xticklabels=['a', 'b', 'c'],
        yticks=[1, 2, 3])

# Use the pyplot interface to change just one subplot...
plt.sca(axes[1, 1])
plt.xticks(range(3), ['A', 'Big', 'Cat'], color='red')

fig.tight_layout()
plt.show()

enter image description here

99
Joe Kington

Voir le (assez) récent answer sur le référentiel matplotlib, dans lequel la solution suivante est suggérée:

  • Si vous voulez définir les xticklabels:

ax.set_xticklabels([1,4,5], fontsize=12)

  • Si vous souhaitez uniquement augmenter la taille de la police des xticklabels, en utilisant les valeurs et les emplacements par défaut (ce que j'ai personnellement besoin souvent et que je trouve très pratique):

ax.tick_params(axis="x", labelsize=12)

  • Pour tout faire en même temps:

plt.setp(ax.get_xticklabels(), fontsize=12, fontweight="bold", horizontalalignment="left")

0
Archie

Comme dans la dernière version de Matplotlib, les fonctions set_yticks et set_xticks sont supprimées. Au lieu de définir la taille de x, y ticks, j’ai simplement changé la taille de la figure. 

plt.figure(1, dpi=200, figsize=(20,20))

Je sais que c'est un peu anti-intuitif mais c'est ce qui a fonctionné pour moi ... Dites-moi s'il existe de meilleures méthodes pour résoudre ce problème dans les versions ultérieures de Matplotlib. Merci

0
David Wang