Füllung oben/unten-matplotlib line plot

Ich bin mit matplotlib erstellt ein einfaches Liniendiagramm. Mein plot ist eine einfache Zeit-Serien Daten, die festlegen, wo ich die Zeit entlang der x-Achse und der Wert von etwas, was ich bin-Messung auf der y-Achse. y-Werte haben kann postitive oder negative Werte, und ich möchte, füllen Sie den Bereich über und unter meiner Leitung mit der Farbe blau, wenn der y-Wert > 0 und rot, wenn die y-Werte < 0. Hier mein plot:

Füllung oben/unten-matplotlib line plot

Wie Sie sehen können, ich kann mit der blauen Farbe zu füllen richtig, aber ich kann nicht die rote Farbe zu füllen richtig. Hier ist der basic-code, den ich verwende:

plt.plot(x, y, marker='.', lw=1)
d = scipy.zeros(len(y))
ax.fill_between(xs,ys,where=ys>=d, color='blue')
ax.fill_between(xs,0,where=ys<=d, color='red')

Wie bekomme ich die Fläche von einem positiven y-Wert auf der x-Achse blau und die Umgebung aus einer negativen y-Wert auf der x-Achse rot? Vielen Dank für die Hilfe.

Ich glaube, die Letzte Zeile in den code-snippet sollte ax.fill_between(xs,ys,where=ys<=d, color='red'), als Sie jetzt versuchen, füllen Sie den Bereich zwischen y1=0 und y2=0 (d.h. keine Fläche). Das zweite argument (in diesem Fall ys) übergeben wird, der y1 parameter, und da y2 hat default-Wert 0 die Methode füllt die Fläche zwischen das array, das Sie angegeben haben, für y1 und die Linie y=0, das ist, was Sie wollen.
Vielen Dank für die Hilfe. Dein Vorschlag bedingt geklappt. Allerdings bin ich immer noch nicht wie man die richtige Farbe füllen, in den Fällen, in denen ein Punkt sagen, (10, 10) verbunden ist ein weiterer Punkt, der kreuzt die x-Achse, sagen, (11, -10). Hier ist, was der plot sieht so aus: postimg.org/image/u329jhlob
Ah, ich dachte, das war es, was Sie wollte, zu sehen, wie Sie sagte, die Blaue Fläche auf der Abbildung oben, war richtig. Dies sollte eine einfache Lösung: ax.fill_between(xs,ys,where=ys<=d, interpolate=True, color='red'). Die interpolate parameter ist die Funktion interpolieren zu finden der Schnittmenge zwischen den y1 und y2 arrays, wie man eine "glattere" - plot.
Perfekt!!! Vielen Dank für die Hilfe.

InformationsquelleAutor user1728853 | 2013-06-04

Schreibe einen Kommentar