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

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).


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.


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.


1
Komentarz @ joe-kington mówi, że wszystkie funkcje matplotlib przyjmują parametr alfa. Czy Twoja odpowiedź wymaga korekty lub jego komentarza?
U3.1415926
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.