So invertieren Sie die x- oder y-Achse

Lesezeit: 2 Minuten

Benutzer-Avatar
DarkAnt

Ich habe ein Streudiagramm mit einer Reihe zufälliger x-, y-Koordinaten. Derzeit beginnt die Y-Achse bei 0 und geht bis zum Maximalwert. Ich möchte, dass die Y-Achse beim Maximalwert beginnt und auf 0 geht.

points = [(10,5), (5,11), (24,13), (7,8)]    
x_arr = []
y_arr = []
for x,y in points:
    x_arr.append(x)
    y_arr.append(y)
plt.scatter(x_arr,y_arr)

  • Die Menge an richtigen Antworten auf diese Fragen zeigt nur, wie verwirrend diese Bibliothek im Gebrauch ist

    – g_uint

    3. November 2021 um 10:15 Uhr

  • @g_uint Seit mindestens 10 Jahren gibt es das eines offensichtlicher Weg und das ruft die invert_yaxis() Methode.

    – Blackjack

    1. Dezember 2021 um 22:49 Uhr

  • @BlackJack was für dich offensichtlich ist, ist für andere möglicherweise nicht offensichtlich 🙂

    – g_uint

    2. Dezember 2021 um 8:46 Uhr

Es gibt eine neue API, die dies noch einfacher macht.

plt.gca().invert_xaxis()

und/oder

plt.gca().invert_yaxis()

  • Beachten Sie, dass Sie die Achsengrenzen festlegen müssen Vor Sie kehren die Achse um, andernfalls wird sie wieder aufgehoben.

    – TheBigH

    22. Januar 2016 um 15:56 Uhr

  • Wäre sicher schön, wenn es ein boolesches Argument nehmen würde. Wenn Sie wiederholt aufgerufen werden, drehen Sie es einfach hin und her.

    – Dogge

    9. Februar 2021 um 18:13 Uhr

Benutzer-Avatar
Tim Whitcomb

Die Antwort von DisplacedAussie ist richtig, aber normalerweise besteht eine kürzere Methode darin, nur die betreffende einzelne Achse umzukehren:

plt.scatter(x_arr, y_arr)
ax = plt.gca()
ax.set_ylim(ax.get_ylim()[::-1])

bei dem die gca() Funktion gibt die aktuelle Axes-Instanz und die [::-1] kehrt die Liste um.

  • Das scheint mir eine bessere Antwort zu sein. 🙂

    – DisplacedAussie

    12. Januar 2010 um 23:07 Uhr

Sie können auch die Funktion verwenden, die durch das Achsenobjekt des Streudiagramms verfügbar gemacht wird

scatter = plt.scatter(x, y)
ax = scatter.axes
ax.invert_xaxis()
ax.invert_yaxis()

  • Ich habe mich gefragt, warum mein 3D-Drahtmodell mir nicht dasselbe Datum wie die Karte gab. Kehre die x-Achse um.

    – Pierre

    23. Februar 2021 um 17:16 Uhr

Verwenden matplotlib.pyplot.axis()

axis([xmin, xmax, ymin, ymax])

Sie könnten also am Ende so etwas hinzufügen:

plt.axis([min(x_arr), max(x_arr), max(y_arr), 0])

Obwohl Sie vielleicht an jedem Ende eine Polsterung wünschen, damit die äußersten Punkte nicht auf der Grenze sitzen.

Benutzer-Avatar
charles.fox

Wenn du in ipython bist pylab Modus, dann

plt.gca().invert_yaxis()
show()

das show() ist erforderlich, um die aktuelle Zahl zu aktualisieren.

Benutzer-Avatar
Mortsde

Ein anderes ähnliches Verfahren zu den oben beschriebenen ist zu verwenden plt.ylim zum Beispiel:

plt.ylim(max(y_array), min(y_array))

Diese Methode funktioniert für mich, wenn ich versuche, mehrere Datensätze auf Y1 und/oder Y2 zusammenzusetzen

Benutzer-Avatar
Farzad Schwindel

Die Verwendung von ylim() ist möglicherweise der beste Ansatz für Ihren Zweck:

xValues = list(range(10))
quads = [x** 2 for x in xValues]
plt.ylim(max(quads), 0)
plt.plot(xValues, quads)

ergibt:Geben Sie hier die Bildbeschreibung ein

1095550cookie-checkSo invertieren Sie die x- oder y-Achse

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy