Bokeh-Beispiel

In Bokeh werden ganze Dateien geladen, deswegen müssen die SVG-Kacheln rechteckig sein.

1. Importe

Wir benötigen folgende Importe, um Bokeh in Jupyter Notebooks anzeigen zu können und die SVG-Dateien Base64-kodiert verarbeiten zu können.

[1]:
import base64
from bokeh.io import show, output_notebook
from bokeh.models import ImageURLTexture
from bokeh.plotting import figure
from bokeh.resources import INLINE

output_notebook(resources=INLINE)
Loading BokehJS ...

2. SVGs definieren

[2]:
svg_files = [
    "dotspattern.svg",
    "caretpattern.svg",
    "trianglepattern.svg",
    "spiralpattern.svg",
    "crosspattern.svg",
    "diamondpattern.svg",
    "squarepattern.svg",
    "tristarpattern.svg"
]

3. Konvertieren der SVG-Dateien

Die SVG-Dateien werden nun Base64-kodiert und als Dict zur Verfügung gestellt.

[3]:
def svg_to_base64(svg_path):
    """Umwandeln der SVGs in Base64-URLs"""
    with open(svg_path, "rb") as svg_file:
        encoded_svg = base64.b64encode(svg_file.read()).decode("utf-8")
    return f"data:image/svg+xml;base64,{encoded_svg}"

# Dictionary aus Hatch-Pattern und SVGs erstellen
hatch_patterns = {f"pattern_{i}":
    ImageURLTexture(
        url=svg_to_base64("../../../_static/pattern/" + svg_files[i])
    ) for i in range(len(svg_files))}

4. Farbnamen und Beispielwerte für den Plot erstellen

[4]:
categories = ["Purple", "Teal", "Orange", "Blue", "Red", "Cyan", "Magenta", "Green"]
values = [90, 80, 50, 55, 50, 60, 40, 80]

5. Säulendiagramm (vbar) erstellen

[5]:
p = figure(x_range=categories, height=400,
           title="cusy Pattern Example")

p.vbar(x=categories,
       top=values,
       hatch_extra=hatch_patterns,  # Pattern anwenden
       hatch_pattern=[f"pattern_{i}" for i in range(len(categories))],
       line_color=None)
[5]:
GlyphRenderer(
id = 'p1058', …)

6. svg-Backend auswählen

[6]:
p.output_backend="svg"

show(p)