matplotlib Bitmap-Plot mit Vektortext

8

Ich zeichne also eine Wellenform (und andere Dinge), die eine größere Vektordatei (PDF) ergeben als die entsprechende Rasterdatei (PNG). Ich stelle mir das vor, weil der geplottete Datensatz sehr groß ist und es Millionen von Anweisungen in der Vektordatei gibt. Abgesehen davon, dass das PDF-Format größer ist, ist es auch für den PDF-Reader ziemlich schwierig, es anzuzeigen. Bei einigen dauert das Laden einige Sekunden. bei anderen lädt es überhaupt nicht.

Ist es im Pyplot möglich, ein Bitmap-Diagramm mit Vektorachsen, Beschriftungen und anderem Text zu erstellen?

Meine (sehr schlechte) Lösung besteht momentan darin, das PDF zu generieren, das PNG zu generieren, das PDF mit inkscape zu öffnen und den Plot durch den PNG zu ersetzen. Offensichtlich ist dies zu manuell und sehr zeitaufwendig, wenn Sie erkennen, dass Sie die Handlung neu generieren müssen.

    
gozzilli 18.07.2013, 17:17
quelle

2 Antworten

10

Es sollte so einfach sein wie die Übergabe von rasterized=True an den Befehl plot .

z. B.

%Vor%

Für mich ergibt dies eine PDF mit einer gerasterten Zeile (die Auflösung wird durch die dpi gesteuert, die Sie mit savefig angegeben haben - standardmäßig ist es 100) und Vektortext.

    
Joe Kington 18.07.2013, 18:02
quelle
1

Ich benutze eine schmutzige "Reparatur" für dieses Problem. Ich produziere die Handlung einfach zweimal. Sobald ich alle Rahmen, Titel usw. entferne und als png speichere und in dem anderen Fall entferne ich die tatsächlichen Daten und speichere alle Komponenten, die ich als Vektordaten haben möchte, in einer pdf. Dann verwende ich ImageMagick, um das PNG in ein PDF zu konvertieren, das Bitmap-Daten enthält, und überlagere die Vektordaten aus dem PDF mit pdftk. Hier ist ein Pcolor-Beispiel von der Matplotlib-Seite, die in der beschriebenen Weise angepasst wurde.

%Vor%

Grundsätzlich ist es nur eine automatisierte Version dessen, was Sie bereits tun ...

    
Andreas Bleuler 03.09.2013 14:35
quelle