Jak wyeksportować wykresy z matplotlib z przezroczystym tłem?

108

Używam matplotlib do tworzenia niektórych wykresów i niestety nie mogę ich wyeksportować bez białego tła.

przykładowa działka z jednolitym białym tłem

Innymi słowy, kiedy eksportuję taką fabułę i umieszczam ją na innym obrazie, białe tło zakrywa to, co jest za nim, zamiast pozwolić mu się prześwitywać. Jak zamiast tego wyeksportować wykresy z przezroczystym tłem?

Kupitor
źródło

Odpowiedzi:

177

Użyj savefigfunkcji matplotlib z argumentem słowa kluczowego, transparent=Trueaby zapisać obraz jako plik png.

In [30]: x = np.linspace(0,6,31)

In [31]: y = np.exp(-0.5*x) * np.sin(x)

In [32]: plot(x, y, 'bo-')
Out[32]: [<matplotlib.lines.Line2D at 0x3f29750>]            

In [33]: savefig('demo.png', transparent=True)

Wynik: demo.png

Oczywiście ta fabuła nie pokazuje przejrzystości. Oto zrzut ekranu pliku PNG wyświetlanego za pomocą displaypolecenia ImageMagick . Wzór szachownicy to tło widoczne przez przezroczyste części pliku PNG.

wyświetl zrzut ekranu

Warren Weckesser
źródło
2

Pliki PNG mogą obsługiwać przezroczystość. Możesz więc użyć tego pytania Zapisz wykres do pliku obrazu zamiast wyświetlać go za pomocą Matplotlib , aby zapisać wykres jako pngplik.

A jeśli chcesz, aby wszystkie białe piksele były przezroczyste, jest jeszcze jedno pytanie: używając PIL, aby uczynić wszystkie białe piksele przezroczystymi?

Jeśli chcesz zamienić cały obszar na przezroczysty, to jest takie pytanie: A potem użyj biblioteki PIL, jak w tym pytaniu Python PIL: jak uczynić obszar przezroczystym w PNG? tak, aby Twój wykres był przejrzysty.

Stephane Rolland
źródło
Dzięki, ale to nie pomaga. Wiedziałem, że png może być przezroczysty, ale wynik działania matplotlib już nie. Ponadto Twoja sugestia obejmuje tylko przypadek, gdy chcesz usunąć prostokąty. Chcę, aby moja fabuła została zapisana, a tło usunięte.
Cupitor
2
O ile dobrze pamiętam, ustawiłeś jaki jest przezroczysty kolor w png. plik. Ustaw kolor biały jako kolor przezroczystości i gotowe.
Stephane Rolland,
Przypuszczam, że 255 jest białe i kiedy idę z nim, tracę wątek!
Cupitor
to jest dziwne. tylko twoje działki? wykres w kolorze czarnym i jednostki w kolorze czarnym i niebieska krzywa również?
Stephane Rolland
1
jest to pytanie o przekształcenie całego białego piksela w przezroczystość (bez używania maski, tak jak ja do ciebie podlinkowałem) stackoverflow.com/questions/765736/ ...
Stephane Rolland