Python-XTicks in Teilbildern

Wenn ich ein einzelnes imshow-Diagramm zeichne, kann ich verwenden

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

verwenden, um meine xtick-Beschriftungen zu ersetzen.

Jetzt zeichne ich 12 imshow-Plots mit

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

Wie kann ich meine xticks nur für eine dieser Teilplots ändern? Ich kann nur auf die Achsen der Teilplots mit axarr[i, j] zugreifen. Wie kann ich auf plt nur für einen bestimmten Teilplot zugreifen?

Lösung

Es gibt zwei Möglichkeiten:

  1. Verwenden Sie die Achsenmethoden des Subplot-Objekts (z. B. ax.set_xticks und ax.set_xticklabels) oder
  2. Verwenden Sie plt.sca, um die aktuellen Achsen für die Pyplot-Zustandsmaschine (d.h. die plt-Schnittstelle) zu setzen.

Als Beispiel (dies illustriert auch die Verwendung von setp, um die Eigenschaften aller Subplots zu ändern):

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

Kommentare (1)

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

  • Wenn Sie die xticklabels setzen wollen:

      ax.set_xticks([1,4,5])
      ax.set_xticklabels([1,4,5], fontsize=12)
  • Wenn Sie nur die Schriftgröße der xticklabels erhöhen wollen, 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 machen:

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

Scheint wie in der späteren Version von Matplotlib, die set_yticks und set_xticks Funktionen entfernt werden. Was ich tat, war, statt der Einstellung der Größe der x,y ticks, ich änderte nur die Figur Größe.

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

Ich weiß, es ist ein bisschen anti-intuitiv, aber das hat bei mir funktioniert... Lassen Sie mich wissen, ob es bessere Methoden gibt, um dieses Problem in den späteren Versionen von Matplotlib zu lösen. Danke

Kommentare (0)