2012-12-25 17 views
6

W przypadku artykułu generuję wykresy zdeformowanych siatek elementów skończonych, które wizualizuję za pomocą polikolleksu matplotlib. Obrazy są zapisywane w formacie pdf.rasteryzacja zawartości osi matplotlib (ale nie ramek, etykiet)

Problemy pojawiają się w przypadku siatek o wysokiej gęstości, dla których podejście naiwne powoduje, że pliki są zbyt duże i zbyt intensywne, aby były praktyczne.

Dla tych oczek nie ma sensu wykreślać każdego elementu jako wielokąta; można go łatwo zrasteryzować, tak jak robi się to podczas zapisywania obrazu jako jpg lub png. Jednak do druku chciałbym trzymać ostrą ramkę, etykiety i adnotacje.

Czy ktoś wie, czy możliwe jest uzyskanie tego rodzaju rasteryzacji hybrydowej w matplotlib?

Potrafię wymyślić rozwiązania obejmujące imshow i pomijając polikollection, ale wolałbym używać wbudowanych komponentów matplotlib.

Dzięki za porady.

Odpowiedz

9

Po prostu prześlij słowo kluczowe rasterized=True do swojego konstruktora kolekcji. Przykład:

col = collections.PolyCollection(<arguments>, rasterized=True) 

Umożliwia to selektywne rasteryzację tego elementu tylko (na przykład jeśli nie jest normalny wykres na nim, byłoby wektorowy domyślnie). Większość poleceń, takich jak plot lub imshow, może również przyjąć słowo kluczowe rasterized. Jeśli ktoś chce rasteryzację całą postać (łącznie z etykietami i adnotacje), byłoby to zrobić:

fig = plt.figure() 
a = fig.add_subplot(1,1,1, rasterized=True) 

(Ale nie jest to, co chcesz, jak wskazano w pytaniu.)

+0

Wow, to proste . Teraz martwię się o moje umiejętności związane z googlowaniem. Ale dziękuję bardzo za tę odpowiedź, właśnie to miałem nadzieję! – gertjan

+0

To jest świetne! Czy wiesz, jak kontrolować rozdzielczość rasteryzacji? Wydaje się ignorować dpi, które przechodzę do 'figure' i' savefig' ... – weronika

+0

@weronika, jeśli dpi w 'figure' lub' savefig' nie działa, to tak naprawdę nie wiem jak to zmienić . 'collections' wydaje się używać dekoratora' allow_rasterization' artysty, ale z szybkiego spojrzenia na kod nie mogłem zobaczyć jak ustawić dpi. – tiago