svg

In manchen Fällen kann es sehr nützlich sein die erzeugten Grafiken nicht nur als PNG, sondern ebenfalls als SVG zu speichern. Vor allem wenn die erzeugte Grafik über sehr viele feine Details verfügt, werden bei dem PNG-Export schnell die Artifakte sichtbar, die in manchen Fällen sogar zur Missinterpretation der Visualisierung führen können.

Beispiel

import matplotlib.pyplot as plt
import numpy as np

plt.figure(figsize=[6, 6])
x = np.arange(0, 100, 0.00001)
y = x*np.sin(2* np.pi * x)
plt.plot(y)
plt.axis('off')
plt.gca().set_position([0, 0, 1, 1])

Bereits bei der Erzeugung der Grafik werden die durch Moiré-Effekt (ist es die richtige Bezeichnung dafür?) verursachten Artefakte deutlich:

Die durch die Rechtsclickmenü verfügbare Speicheroption erzeugt zwar eine verlustfrei kodierte PNG-Datei, diese hat aber in der Regel eine unzureichende Auflösung um einzelne Details der Grafik zu untersuchen. So werden bei der Vergrößerung die starken Artefakte immer sichtbarer:

Der SVG-Format ermöglicht es die Kurvenverläufe als Vektorgrafik zu speichern und somit diese unabhängig von der verwendeten Auflösung immer korrekt darzustellen:

Python verfügt nicht über die Möglichkeit die SVG-Darstellung direkt in der Shell oder Jupyter-Notebook zu integrieren, kann aber durch folgenden Befehl es als ein einzelne Datei speichern:

plt.savefig("test.svg")

In den oben angeführten Beispiel wird die Grafik als test.svg in der working directory Ordner gespeichert. Dieser kann durch Ausführung von folgenden Befehlen genau angezeigt werden:

import os
os.getcwd()

Ferner kann der Speicherungsort durch zusätzliche Angaben weiter ausdifferenziert werden: Link


Quelle

  • svg.txt
  • Zuletzt geändert: 2021/03/18 18:03
  • von egor