2012-04-12 11 views
6

Ich kann niemand anderes mit diesem Problem finden. In Matplotlib können Sie Ihre Plots mit show() oder savefig() anzeigen. Diese erzeugen leicht unterschiedliche Bilder; In meinem Fall ist das Bild von savefig() hässlicher und schwerer zu verstehen. Ich muss meinem Prüfer das Leben leicht machen, also ..matplotlib, savefig: DPI-Einstellung wird ignoriert

Ich fand einige Themen, die vorschlugen, dass ich die DPI-Größe an die von show() anpasse. Ich habe versucht:

-> Einstellung savefig.dpi direkt mit matplotlib.rcParams [ 'savefig.dpi'] = 80.

-> Einstellung savefig.dpi direkt in ~/.matplotlib/matplotlibrc.

-> Verschieben meiner RC-Datei in CWD.

-> Schließlich mit savefig ('image.pdf', dpi = 80)

ich überprüfen kann, dass das Attribut in der Tat gesetzt zu werden; aber es scheint, dass die Einstellung von savefig() ignoriert wird. Kann mir jemand helfen?

(vereinfacht) Code:

plt.bar(ind, functimes, yerr=stddev, bottom=0, width=barWidth, align='center', color='b') 

ax = plt.gca() 
ax.legend(barRcts, barLegend) 
plt.title("Function Call Overhead") 
plt.xlabel("Function ID") 
plt.ylabel("Execution Time [us]") 

plt.xticks(ind, funcNames) 
figtest.autofmt_xdate() 

plt.savefig(out_file, dpi=80, format='pdf') 
+5

'matplotlib' speichert' pdf' Dateien im Vektorformat. Sofern Sie keine Bitmap-Bilder haben, ist DPI in einem Vektorbild ziemlich bedeutungslos, da sie auflösungsunabhängig sind. – Avaris

+1

Aha, ich verstehe. Es gibt also keine Möglichkeit, PDF-Bilder mit savefig() zu speichern, so dass sie mit denen identisch sind, die Sie mit show() (manuell) speichern können. – memstick

+5

Sie sollten identisch sein. Der einzige Unterschied besteht möglicherweise darin, dass Sie die Größe der Figur vor dem Speichern ändern. Sie können aber auch die Größe Ihrer Figur festlegen ('figure ((width, height))') und 'savefig' wird das verwenden. – Avaris

Antwort

3

PDF Spar nutzt die DPI-Einstellung für die Bildauflösung innerhalb des PDF, nicht für jede Linie/Polygon-Auflösung (die in einem Vektor-Format bedeutungslos ist).

Wenn Sie mit der Ausgabe auf dem Bildschirm zufrieden sind und keine skalierbare Grafik benötigen, ist das Speichern unter png wahrscheinlich in Ordnung.

+0

Aber beachten Sie, dass wenn Sie 'contourf' (zum Beispiel) verwendet haben Sie ein Rasterbild in Ihrem PDF/SVG, so dass dpi wieder sinnvoll ist. –

+0

@ChrisH - stimme ich nicht zu. Contourf erzeugt Vektorausgabe nicht Raster. imshow erzeugt jedoch ein Bild, so dass (aus dem Speicher) ein Bild dpi zur Unterstützung vorhanden ist. HTH – pelson

+1

Es stellt sich heraus, dass Sie Recht haben - nach meiner 5,5 MB. Svg, die Inkscape zu einem absoluten Crawl verlangsamt. Dann helfen die dpi-Einstellungen dabei, die Linienbreite für Achsen und überlagerte Linien richtig einzustellen. Das hatte ich vor einiger Zeit gemerkt, aber vergessen, mich einzuloggen und zu aktualisieren. –