wake-up-neo.net

Wie erhalte ich die Farbe der neuesten Linie in Python plt

Ich zeichne eine Linie, ohne die Farbe anzugeben (think: plt.plot (x, y)) . Die Farbe kommt blau heraus.

Frage: Wie erhalte ich diese Farbe vom Plt-Objekt, damit ich sie in eine Variable setzen kann?

Scheint so, als sei dies nahe (und möglicherweise die Lösung):

p = plt.plot(x,y)
color = p[0].get_color()

Aktualisierte Frage: Ich bin mir nicht sicher, ob ich den Index "0" verstehe: Greift p [0] immer auf die zuletzt geplottete Linie zu?

30
denvar

In Ihrem Beispiel ist p eine Liste von Line2D-Objekten. In diesem Beispiel haben Sie nur ein Linienobjekt, p [0]. Das folgende Beispiel zeigt drei Linien. Wenn mehr Zeilen hinzugefügt werden, wird es an p.o angehängt. Wenn Sie die Farbe der letzten Zeichnung wünschen, wird a[-1].get_color() angezeigt.

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(10)
y = np.arange(10)
p = plt.plot(x,y, x,y*2, x,y*3) # make three line plots
type(p) # list
type(p[0]) # <class 'matplotlib.lines.Line2D'>
p[0].get_color() # 'b'
p[1].get_color() # 'g'
p[2].get_color() # 'r'

 line plot

42
Hun

Bei normalem plt.plot erhalten Sie mit item.get_color() für jedes Element der zurückgegebenen Liste die Farben der einzelnen Zeilen.

Andere Plot-Funktionen wie plt.scatter geben jedoch ein Collection zurück. Für ein Collection können Sie result.get_facecolor() aufrufen. Dies gibt ein Array von Farbwerten der Vordergrundfarben der Elemente zurück. Wenn also alle dieselbe Farbe haben (wie bei der Erstellung eines Streudiagramms mit nur X- und Y-Werten), genügt result.get_facecolor()[0].

1
Jim Hunziker