Export statischer Bilder¶
Bokeh unterstützt den Export von PNG und SVG.
PNG-Export¶
Bokeh unterstützt das Exportieren eines Plots oder Layouts in das PNG-Bildformat mit der Funktion export_png
. Diese Funktion enthält ein zu exportierendes Bokeh-Objekt und einen Dateinamen, in den die PNG-Ausgabe geschrieben werden soll. Häufig handelt es sich bei dem an export_png
übergebenen Bokeh-Objekt um eine einzelne Darstellung, dies muss jedoch nicht sein. Wenn ein Layout exportiert wird, wird das gesamte Layout in einem PNG-Bild gespeichert.
Die PNG-Exportfunktion erfordert die Installation einiger zusätzlicher Abhängigkeiten, z.B.:
$ spack env activate python-38
$ spack install py-selenium@3.141.0%gcc@11.2.0
$ py-pillow@8.0.0%gcc@11.2.0~freetype~imagequant+jpeg~jpeg2000~lcms~tiff~webp~webpmux~xcb+zlib
Nach der Installation von Selenium müsst ihr das geckodriver-Binary herunterladen und installieren. Stellt sicher, dass geckodriver
in PATH
verfügbar ist. Weitere Informationen findet ihr in der geckodriver-Dokumentation. Schließlich muss auch noch Firefox auf eurem System verfügbar sein.
[1]:
import pandas as pd
from bokeh.plotting import figure
from bokeh.sampledata.stocks import AAPL
df = pd.DataFrame(AAPL)
df["date"] = pd.to_datetime(df["date"])
[2]:
from bokeh.io import export_png
p = figure(width=800, height=250, x_axis_type="datetime")
p.line(df["date"], df["close"], color="navy", alpha=0.5)
export_png(p, filename="plot.png")
[2]:
'/Users/veit/cusy/trn/pyviz-tutorial/docs/bokeh/embedding-export/plot.png'
SVG Export¶
Bokeh kann auch SVG-Ausgaben im Browser generieren, anstatt HTML-canvas
-Elemente zu rendern. Dies wird durch Setzen von output_backend='svg'
für eine figure
erreicht. Anschließend kann das SVG entweder mit output_file
in HTML-Dateien oder in mit components
erstellten Inhalten eingebettet werden. Alternativ können mit export_svgs
auch .svg
-Dateien erstellt werden. Beachten Sie, dass für jedes HTML-canvas
-Element eine SVG-Datei erstellt wird; es ist jedoch nicht
möglich, vollständige Layouts oder Widgets in einer SVG-Datei zu erstellen.
[3]:
from bokeh.io import export_svgs
p = figure(width=800, height=250, x_axis_type="datetime", output_backend="svg")
p.line(df["date"], df["close"], color="navy", alpha=0.5)
export_svgs(p, filename="plot.svg")
[3]:
['plot.svg']
[4]:
from IPython.display import SVG
SVG("plot.svg")
[4]: