Python xticks in Nebenhandlungen

83

Wenn ich einen einzelnen imshowPlot zeichne, kann ich ihn verwenden

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

um meine xtick-etiketten zu ersetzen.

Jetzt zeichne ich 12 imshowDiagramme mit

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

Wie kann ich meine xticks nur für eine dieser Nebenhandlungen ändern? Ich kann nur mit auf die Achsen der Nebenhandlungen zugreifen axarr[i, j]. Wie kann ich pltnur für eine bestimmte Nebenhandlung zugreifen ?

user2926577
quelle

Antworten:

161

Es gibt zwei Möglichkeiten:

  1. Verwenden Sie die Achsenmethoden des Unterzeichnungsobjekts (z. B. ax.set_xticksund ax.set_xticklabels) oder
  2. Verwenden Sie plt.scadiese Option, um die aktuellen Achsen für die Pyplot-Zustandsmaschine (dh die pltSchnittstelle) festzulegen .

Als Beispiel (dies zeigt auch die Verwendung setpzum Ändern der Eigenschaften aller Unterzeichnungen):

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

Geben Sie hier die Bildbeschreibung ein

Joe Kington
quelle
Welche Version verwenden Sie? Ich werde AttributeError: Unknown property xtickslabelsfürplt.setp(ax, xtickslabels=xticks)
Frederick Nord
19

Siehe die (recht) aktuelle Antwort im Matplotlib-Repository, in der die folgende Lösung vorgeschlagen wird:

  • Wenn Sie die xticklabels festlegen möchten:

    ax.set_xticks([1,4,5]) 
    ax.set_xticklabels([1,4,5], fontsize=12)
    
  • Wenn Sie nur die Schriftgröße der xticklabels erhöhen möchten, indem Sie die Standardwerte und -positionen verwenden (was ich persönlich oft brauche und sehr praktisch finde):

    ax.tick_params(axis="x", labelsize=12) 
    
  • Um alles auf einmal zu tun:

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