In diesem Artikel wird "import matplotlib.pyplot as plt" und "fig = plt.figure ()" angenommen.
Um die Skalierungsbezeichnung der in Python ausgegebenen Figur zu erhalten
--Plt.draw () zur Bestätigung der Abbildung --locs, labs = Erhalte Skalen mit plt.xticks () --_ labs = [lab.get_text () für lab in labs], um die Zeichenfolge der Skalenbeschriftung abzurufen
Das Verfahren ist erforderlich. Alternativ können Sie es bearbeiten, indem Sie die Elemente von Labs direkt neu schreiben (Beispiel: labs [0] .set_va ('top')). Die letztere Methode ist möglicherweise praktischer, da damit andere Zeichenfolgen als Zeichenfolgen bearbeitet werden können.
~ Erklärung unten ~
Selbst wenn Sie die Skala erhalten, die Python standardmäßig ausgibt, sind die Beschriftungsinformationen möglicherweise nicht enthalten. Zum Beispiel
plt.plot( [ 5, 7, 6 ] )
Wenn Sie ausführen, wird die folgende Abbildung angezeigt:
Selbst wenn Sie diese Skala erhalten, lautet die Etiketteninformation "". Beachten Sie, dass der zweite Rückgabewert von "plt.xticks ()" keine Zeichenfolge ist, sondern eine Liste von "matplotlib.text.Text" -Objekten, sodass die Zeichenfolge von der Methode ".get_text ()" erfasst wird. ::
xlocs, xlabs = plt.xticks()
print( xlocs ) # [-0.5 0. 0.5 1. 1.5 2. 2.5 3. 3.5]
print( [ xlab.get_text() for xlab in xlabs ] ) # ['', '', '', '', '', '', '', '', '']
ylocs, ylabs = plt.xticks()
print( ylocs ) # [4.5 5. 5.5 6. 6.5 7. 7.5 8. 8.5]
print( [ ylab.get_text() for ylab in ylabs ] ) # ['', '', '', '', '', '', '', '', '']
Darüber hinaus sind in der Abbildung, die gerade ausgegeben wird, oben, unten, links und rechts der Skalen zusätzliche Skalen (-0,5 auf der horizontalen Achse usw.) enthalten. Dies liegt daran, dass sich die Python-Seite in einem Zustand befindet, in dem "die Skalierung derzeit unentschlossen ist und entsprechend der zusätzlichen Bearbeitung entsprechend angepasst wird". stackoverflow: Getting empty tick labels before showing a plot in Matplotlib
Führen Sie daher "plt.draw ()" oder "fig.canvas.draw ()" aus, um die Abbildung einmal zu bestätigen. Dann ist auch die Zeichenfolge der Skala festgelegt, sodass Sie die Zeichenfolge in der Abbildung anzeigen können (obwohl sich die angezeigte Abbildung nicht ändert).
plt.plot( [ 5, 7, 6, 8 ] )
plt.draw()
xlocs, xlabs = plt.xticks()
print( xlocs ) # [-0.5 0. 0.5 1. 1.5 2. 2.5 3. 3.5]
print( [ xlab.get_text() for xlab in xlabs ] ) # ['−0.5', '0.0', '0.5', '1.0', '1.5', '2.0', '2.5', '3.0', '3.5']
ylocs, ylabs = plt.yticks()
print( ylocs ) # [4.5 5. 5.5 6. 6.5 7. 7.5 8. 8.5]
print( [ ylab.get_text() for ylab in ylabs ] )
# ['4.5', '5.0', '5.5', '6.0', '6.5', '7.0', '7.5', '8.0', '8.5']
Selbst in diesem Stadium sind zusätzliche Skalen oben, unten, links und rechts enthalten. Wenn Sie also "plt.xticks (xlocs, xlabs)" erneut ohne Bearbeitung ausführen, werden die zusätzlichen Skalen angezeigt und die Ränder der Figur werden groß. Masu:
plt.xticks( xlocs, xlabs )
plt.yticks( ylocs, ylabs )
Wenn Sie den Bereich der Abbildung nicht ändern möchten, geben Sie den Bereich der Abbildung mit "xlim ()", "ylim ()" an oder schneiden Sie die Liste der Skalen entsprechend ab (Beispiel: "xlocs [1: -1]" ) müssen es tun.
xmin, xmax = plt.xlim()
ymin, ymax = plt.ylim()
plt.xticks( xlocs, xlabs )
plt.yticks( ylocs, ylabs )
plt.xlim( xmin, xmax )
plt.ylim( ymin, ymax )
# === OR ===
plt.xticks( xlocs[1:-1], xlabs[1:-1] )
plt.yticks( ylocs[1:-1], ylabs[1:-1] )
Oben wurde die Zeichenfolge der Skalenbeschriftung einmal erhalten, aber durch direkten Zugriff auf die Klasse matplotlib.text.Text, die von plt.xticks ()
erhalten wurde, ** bearbeiten Sie das Erscheinungsbild der Skala nacheinander **. Ich kann.
Verwenden Sie zum Bearbeiten die Methodenliste (set_ *
) auf der unteren Seite. Zum Beispiel
matplotlib offiziell: matplotlib.text.Text
xlocs, xlabs = plt.xticks()
xlabs[3].set_color( 'red' )
xlabs[5].set_va( 'center' )
Dann werden die Farbe und Höhe eines Teils der horizontalen Achse geändert.
Sie können dies auch nutzen, um die Beschriftungen zu versetzen, wenn die Häkchen zu lang werden: stackoverflow: Aligning rotated xticklabels with their respective xticks
Recommended Posts