image image


image

Worknote: Matplotlib-Zeichnung als Datei sichern

Wenn man – wie ich gestern – lauter schöne, bunte Mandelbrötchen gebacken hat, möchte man die Ergebnisse natürlich auch abspeichern können. Die Matplotlib stellt dafür die Methode matplotlib.pyplot.savefig() zur Verfügung. Per Default erkennt sie das abzuspeichernde Dateiformat an der Dateiendung, man kann ihr aber auch ein Format als Parameter mitgeben. Sie beherrscht ziemlich viele Formate, ich habe bei meinen Tests die Dateien als PNG, JPEG, PDF und SVG herausgerendert.

Die Bedienung ist ziemlich einfach: Zu meinem gestrigen Programm sind lediglich ein paar Zeilen hinzugekommen:

import os

...

maxiter = 100

file_path = os.path.dirname(os.path.abspath(__file__))
image_folder = os.path.join(file_path, "images")

@nb.njit(locals = dict(c = nb.complex128, z = nb.complex128))

...

axis.tick_params(left = False)

fig.savefig(os.path.join(image_folder, "mandelbrot_ausschnitt.png"),
            bbox_inches = "tight", pad_inches = 0.0)

root = tk.Tk()

Oben habe ich mit dem Modul os dem Skript explizit den Pfad zum image-Verzeichnis angegeben, das ist – zumindest bei mir – notwendig, weil der Editor meines Vertrauens immer das Projektverzeichnis als cwd behandelt, und das ist in den meisten Fällen nicht das Verzeichnis, in dem meine Skripte liegen.

Abgespeichert wird die Datei dann mit dieser Zeile:

fig.savefig(os.path.join(image_folder, "mandelbrot_ausschnitt.png"),
            bbox_inches = "tight", pad_inches = 0.0)

Mit os.path.join() wird das Skript plattformunabhängig. Denn damit ist es egal, ob der Verzeichnistrenner ein Slash (/) (macOS, Linux) oder ein Backslash (\) (Windows) ist.

Der Parameter bbox_inches = "tight" sorgt zusammen mit pad_inches = 0.0 dafür, daß tatsächlich nur die Zeichnung ohne (in diesem Fall) störende Ränder abgespeichert wird.

Die Größe der Zeichnung kann man mit

fig = Figure(figsize = (6, 6), facecolor = "white")

beeinflussen. Bei figsize = (6, 6) erhält man ein 462x462 Pixel großes Bild, um den Banner für diesen Beitrag zu bekommen, habe ich den Parameter figsize auf (14, 14) gesetzt. Damit wurde das Bild auf 1078x1078 Pixel aufgeblasen. Allerdings hatte dies – wie man oben sieht – kaum einen Einfluß auf die Qualität des Ausschnittes. 🤓

Das Abspeichern der Zeichnung als Datei stört übrigens in keiner Weise die Anzeige der herausgerenderten Mandelbrotmenge. Das Fenster mit dem Tk.Canvas ploppte auch nach dem Abspeichern des Bildes problemlos auf.


(Kommentieren) 

image image



Über …

Der Schockwellenreiter ist seit dem 24. April 2000 das Weblog digitale Kritzelheft von Jörg Kantel (Neuköllner, EDV-Leiter Rentner, Autor, Netzaktivist und Hundesportler — Reihenfolge rein zufällig). Hier steht, was mir gefällt. Wem es nicht gefällt, der braucht ja nicht mitzulesen. Wer aber mitliest, ist herzlich willkommen und eingeladen, mitzudiskutieren!

Alle eigenen Inhalte des Schockwellenreiters stehen unter einer Creative-Commons-Lizenz, jedoch können fremde Inhalte (speziell Videos, Photos und sonstige Bilder) unter einer anderen Lizenz stehen.

Der Besuch dieser Webseite wird aktuell von der Piwik Webanalyse erfaßt. Hier können Sie der Erfassung widersprechen.

Diese Seite verwendet keine Cookies. Warum auch? Was allerdings die iframes von Amazon, YouTube und Co. machen, entzieht sich meiner Kenntnis.


Werbung

Diese Spalte wurde absichtlich leergelassen!


Werbung


image  image  image
image  image  image


image