Transparente Matplotlib-Liniendiagramme

131

Ich zeichne zwei ähnliche Trajektorien in matplotlib und möchte jede der Linien mit teilweiser Transparenz zeichnen, damit das Rot (geplottete Sekunde) das Blau nicht verdeckt.

Alt-Text

BEARBEITEN : Hier ist das Bild mit transparenten Linien.

Alt-Text

Gus
quelle

Antworten:

254

Schlicht und einfach:

plt.plot(x, y, 'r-', alpha=0.7)

(Ich weiß, ich füge nichts Neues hinzu, aber die einfache Antwort sollte sichtbar sein).

Davoud Taghawi-Nejad
quelle
Ich kann nicht sehen, wo der Alpha-Parameter dokumentiert ist. Könnten Sie die Antwort aktualisieren, um anzugeben, wo dies dokumentiert ist?
Alex Spurling
1
@AlexSpurling the plt.plotnimmt Schlüsselwortargumente, für Line2Ddie der Alpha-Parameter unter anderem eine Eigenschaft von ist.
Thirdwater
27

Nachdem ich alle Linien gezeichnet hatte, konnte ich die Transparenz aller wie folgt einstellen:

for l in fig_field.gca().lines:
    l.set_alpha(.7)

EDIT: siehe Joes Antwort in den Kommentaren.

Gus
quelle
28
Alle Maplotlib-Plotfunktionen verwenden direkt einen Alpha-Parameter. Du kannst es einfach tun plt.plot(x, y, 'r-', alpha=0.7).
Joe Kington
3
Ich würde mich über das aktualisierte Bild freuen - können Sie es bitte zu dieser Antwort hinzufügen?
Sven Marnach
3
@ JoeKington: Das scheint die Linien zusammenzusetzen, bevor die Transparenz angewendet wird. Gibt es eine Möglichkeit, es umgekehrt zu machen, sodass sich die transparenten Linien addieren, um dunkler zu werden?
naught101
5

Es hängt wirklich davon ab, welche Funktionen Sie zum Zeichnen der Linien verwenden. Versuchen Sie jedoch, festzustellen, ob das von Ihnen verwendete On einen Alpha-Wert annimmt, und setzen Sie ihn auf etwa 0,5. Wenn dies nicht funktioniert, versuchen Sie, die Linienobjekte abzurufen und ihre Alpha-Werte direkt festzulegen.

Moinudin
quelle
1
Der Kommentar von @ joe-kington besagt, dass alle matplotlib-Funktionen einen Alpha-Parameter annehmen. Benötigt Ihre Antwort eine Korrektur oder seinen Kommentar?
U3.1415926