Przezroczyste wykresy linii Matplotlib

134

Kreślę dwie podobne trajektorie w matplotlib i chciałbym wykreślić każdą z linii z częściową przezroczystością, aby czerwona (wykreślona sekunda) nie przesłaniała niebieskiego.

tekst alternatywny

EDYCJA : Oto obraz z przezroczystymi liniami.

tekst alternatywny

Gus
źródło

Odpowiedzi:

262

Jasne i proste:

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

(Wiem, że nie dodam nic nowego, ale prosta odpowiedź powinna być widoczna).

Davoud Taghawi-Nejad
źródło
Nie widzę, gdzie udokumentowano parametr alfa. Czy możesz zaktualizować odpowiedź, aby uwzględnić, gdzie jest to udokumentowane?
Alex Spurling
1
@AlexSpurling plt.plotprzyjmuje argumenty słów kluczowych, dla Line2Dktórych między innymi parametr alfa jest właściwością.
Thirdwater
27

Po narysowaniu wszystkich linii mogłem ustawić przezroczystość wszystkich w następujący sposób:

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

EDYCJA: zobacz odpowiedź Joe w komentarzach.

Gus
źródło
29
Wszystkie funkcje kreślące maplotlib pobierają bezpośrednio parametr alfa. Możesz po prostu to zrobić plt.plot(x, y, 'r-', alpha=0.7).
Joe Kington
3
Z przyjemnością zobaczę zaktualizowane zdjęcie - czy mógłbyś dodać je do tej odpowiedzi?
Sven Marnach
3
@JoeKington: to wydaje się składać linie przed zastosowaniem przezroczystości. Czy jest sposób, aby zrobić to na odwrót, tak aby przezroczyste linie dodały się do siebie, aby uzyskać ciemniejszy?
naught101
5

To naprawdę zależy od funkcji, których używasz do wykreślania linii, ale spróbuj sprawdzić, czy używany przez ciebie on przyjmuje wartość alfa i ustaw ją na około 0,5. Jeśli to nie zadziała, spróbuj pobrać obiekty liniowe i bezpośrednio ustawić ich wartości alfa.

moinudin
źródło
1
Komentarz @ joe-kington mówi, że wszystkie funkcje matplotlib przyjmują parametr alfa. Czy Twoja odpowiedź wymaga korekty lub jego komentarza?
U3.1415926