svg

Dies ist eine alte Version des Dokuments!


SVG

In manchen Fällen kann es sehr nützlich sein die erzeugten Grafiken nicht nur als PNG, sondern ebenfalls als SVG (Scalable Vector Graphics) 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 gespeichert. Diese kann durch Ausführung von folgenden Code genau angezeigt werden:

import os
os.getcwd()

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

Quelle

  • svg.1616007085.txt.gz
  • Zuletzt geändert: 2021/03/17 18:51
  • von egor