Seite 1 von 1

Bokeh "Areas" erstellen

Verfasst: Freitag 4. Januar 2019, 21:50
von Julien456935
Hallo liebe Community,
für eine Aufgabe muss ich einen bestimmten Graph mit Bokeh erstellen.
Als Beispiel habe ich folgendes hinbekommen:
1--> package importiert
2-->Daten für die x- und y-Achse als Listen erstellt
3-->Figure erstellt (mit Hintergrundfarbe, größe, Beschriftung...)
4-->eine oder zwei Linien hinzugefügt
5-->hovertool erstellt

Code: Alles auswählen

###############################################################################
#for working in jupiter
from bokeh.io import output_notebook
import numpy as np 
#for plotting figure
from bokeh.plotting import figure 
#for show and save
from bokeh.plotting import output_file, show
#for the hovertool
from bokeh.models import HoverTool
###############################################################################
#values
x_axis = [1,2,3,4,5,6,7,8,9,10]
y_axis1 = [12,53,89,34,2,56,6,68,7,44]
y_axis2 = [46,535,868,347,2,42,55,23,68,99]
###############################################################################
#only for notebook
output_notebook()
###############################################################################
#figure
graph = figure(title = "Example",
               x_axis_label = "x-Achse",
               y_axis_label = "y-Achse",
               plot_width = 400,
               plot_height = 300,
               x_axis_type = "datetime")

#backgroundcolor
graph.background_fill_color="#f5f5f5"
###############################################################################
#add a line
graph.line(x_axis, y_axis1, legend="line1", line_width=2)
graph.line(x_axis, y_axis2, legend="line2", line_width=2)
###############################################################################
#add a hovertool
graph.add_tools(HoverTool(tooltips=[
        ('x-wert',   "@x{0.00 a}" ),
        ('y1-wert',  "@y{0.00 a}"), 
        ('y2-wert',  "@y_axis2{0.00 a}")], #creats the Hovertool 
        mode='vline'))

show(graph)



Problem 1:
der Graph selbst soll keine Linie sein sondern eine Ausgefüllte Fläche unterhalb der Linie:
"http://bokeh.pydata.org/en/0.12.0/docs/ ... chart.html"
Dazu gibts auch unter genanntem Link eine Gute Beschreibung mit dem Problem, dass ich nicht verstehe wie ich anstatt Data einfach meine x und y Werte einfügen kann. Sprich Anstatt einer Figure eine Area mit meinen Daten Erstelle.

Code: Alles auswählen

area1 = Area(data, title="Area Chart", legend="top_left", #x&y-Werte??
             xlabel='time', ylabel='memory')             
Oder ist es vl leichter die Fläche unter einer Linie mit Farbe auszufüllen??
Die Anleitung unter diesem Link: https://bokeh.pydata.org/en/latest/docs ... _area.html
erscheint mir noch viel Komplizierter

Problem 2:
Das Hovertool wird Selbstverständlich zweimal pro Linie Angezeigt soll aber eigentlich nur Einer Linie Folgen und Anzeigen, den Wert der Zweiten Linie lässt sich eh einbauen.

🤔🤔Denke dann würde ich mal Weiterkommen

Re: Bokeh "Areas" erstellen

Verfasst: Dienstag 15. Januar 2019, 11:00
von Julien456935
Falls, Jemand in Zukunft eine Lösung benötigt:
Das Problem lässt sich einfach mit "band" lösen, funktioniert gleich wie eine "line" nachdem man eine Abbildung mit "figure" erstellt hat!
BSP : (figure name is graphic)

Code: Alles auswählen

    graphic.add_layout(Band(base = "x-werte", lower = 0, upper = "y-werte", 
                            level = "underlay",
                            fill_alpha = 0.6,  
                            fill_color = "#1f78b4"))