Ich habe eine Zeitreihe in einem Pandas DataFrame (df.data
im Beispiel) und möchte das Diagramm basierend auf den Werten einer anderen Spalte (df.colors
im Beispiel; Werte sind 0, 1 und 2 in diesem Fall, aber es wäre gut/mehr tragbar, wenn es auch mit float
s funktionieren würde).Farbzeitreihen basierend auf Spaltenwerten in Pandas
import pandas as pd
n = 10
seed(1)
df = pd.DataFrame(data={"data":randn(n), "colors":randint(0,3,n)},
index=pd.date_range(start="2016-01-01", periods=n))
df.data.plot(style=".", ms=10)
Was ich suche ist so etwas wie
df.data.plot(style=".", color=df.colors)
(was nicht funktioniert), um ein Grundstück so zu produzieren:
Hier sind die Marker rot, orange, und grün, für colors==0
, 1
bzw. 2
. Es ist relativ einfach, dies manuell für wenige Daten und wenige Farben zu tun, aber gibt es eine direkte Möglichkeit, dies automatisch zu tun?
Es scheint eine Lösung mit plt.scatter
und Farbtabellen zu sein, als zu How to use colormaps to color plots of Pandas DataFrames in der Antwort gezeigt, aber mit einem Datetime-Index plt.scatter
Verwendung zerstört die bequeme automatische Achsenskalierung df.data.plot(...)
der Verwendung. Gibt es eine Möglichkeit, diese Notation zu verwenden?