Bokeh "Areas" erstellen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Julien456935
User
Beiträge: 19
Registriert: Donnerstag 22. November 2018, 15:26

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
Julien456935
User
Beiträge: 19
Registriert: Donnerstag 22. November 2018, 15:26

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"))
Antworten