wake-up-neo.net

Python-Xticks in Subplots

Wenn ich einen einzelnen imshow-Plot zeichne, kann ich ihn verwenden

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

um meine Xtick-Labels zu ersetzen.

Nun zeichne ich 12 imshow-Diagramme mit 

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

Wie kann ich meine Xticks nur für eine dieser Subplots ändern? Auf die Achsen der Unterpläne kann ich nur mit axarr[i, j] zugreifen. Wie kann ich nur für ein bestimmtes Subplot auf plt zugreifen?

45
user2926577

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) festzulegen.

Als Beispiel (dies veranschaulicht auch die Verwendung von setp zum Ä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()

enter image description here

99
Joe Kington

Sehen Sie sich das (ziemlich) aktuelle answer im matplotlib-Repository an, in dem die folgende Lösung vorgeschlagen wird:

  • Wenn Sie die xticklabels setzen wollen:

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

  • Wenn Sie nur die Schriftgröße der xticklabels erhöhen möchten, verwenden Sie die Standardwerte und -speicherorte (was ich persönlich oft benötige und sehr praktisch finde):

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

  • Alles auf einmal machen:

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

0
Archie

Anscheinend wie in der späteren Version von Matplotlib, werden die Funktionen set_yticks und set_xticks entfernt. Was ich tat, war, anstatt die Größe von x, y Häkchen einzustellen, habe ich nur die Zahlengröße geändert. 

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

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

0
David Wang