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. Der einfachste Weg, um sie zu erhalten ist mit pipenv:

$ pipenv install selenium pillow
$ npm install phantomjs-prebuilt

Falls ihr den Python 3.7.4-Kernel und die npm-Pakete des Jupyter-Tutorial installiert habt, müsst ihr nichts weiter tun da die drei Pakete dann bereits installiert sind.

[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(plot_width=800, plot_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/prj/jupyter-tutorial/docs/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(plot_width=800, plot_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]:
../../_images/bokeh_embedding-export_static-images_6_0.svg