Generuję wypełniony wykres warstwowy za pomocą funkcji matplotlib.pyplot.contourf(). Argumenty w wywołaniu funkcji są:Aliasy podczas zapisywania matplotlib wypełnionego konturu do .pdf lub .eps
contourf(xvec,xvec,w,levels,cmap=matplotlib.cm.jet)
gdzie
xvec = numpy.linspace(-3.,3.,50)
levels = numpy.linspace(-0.01,0.25,100)
i w jest moje dane.
Wynikowa fabuła wygląda całkiem nieźle na ekranie, ale kiedy zapisuję do pdf za pomocą wywołania matplotlib.pyplot.savefig(), wynikowy plik pdf ma wiele aliasów (myślę, że to właśnie to się dzieje) . Wywołanie savefig jest po prostu savefig('filename.pdf')
. Próbowałem użyć argumentu dpi, ale bez powodzenia. Połączenie z matplotlib.get_backend()
wypluwa "TkAgg".
będę załączyć rysunek zapisany w formacie PDF, w porównaniu do wielkości zapisanej jako PNG (podobny do tego, co wygląda na ekranie), aby wykazać problem:
png wihtout aliasing: https://dl.dropbox.com/u/6042643/wigner_g0.17.png
PDF z aliasing: https://dl.dropbox.com/u/6042643/wigner_g0.17.pdf
Proszę dać mi znać, jeśli są jakieś inne szczegóły, które mogę podać, aby pomóc ci udzielić odpowiedzi. Powinienem wspomnieć, że zapisywanie jako .eps daje podobne złe wyniki, jak zapisywanie do pdf. Ale dokument PDF pokazuje problem jeszcze jaśniej. Moim celem jest uzyskanie jakości produkcji .eps, którą mogę dołączyć do dokumentu z lateksu, który ma zostać opublikowany jako dokument naukowy. Byłbym szczęśliwy z jakąś pracą, w której zapisuję w jednym formacie, a następnie ją konwertuję, jeśli uda mi się znaleźć sposób, który da satysfakcjonujące rezultaty.
Best,
Arne
Ci wyglądać [mory] (https://en.wikipedia.org/wiki/Moir%C3%A9_pattern) mi. W formacie PDF wzór zmienia się w zależności od poziomu powiększenia. – tacaswell
@arne: Połączone pliki nie istnieją - istnieje szansa na ich zastąpienie? –