2017-12-19 9 views
0

Meine Bokeh-Version ist 0.12.13 und Python 3.6.0 Ich habe den hier verfügbaren Beispielcode geändert: https://bokeh.pydata.org/en/latest/docs/user_guide/plotting.html Ich habe gerade versucht, einen zusätzlichen y-Bereich hinzuzufügen.Warum erzeugt das Bokeh hier nicht extra?

from bokeh.plotting import output_file, figure, show 
from bokeh.models import LinearAxis, Range1d 

x = [1,2,3,4,5] 
y = [1,2,3,4,5] 
y2 = [10,9,8,7,6] 
y3 = [23,24,25,26,27] 

output_file("twin_axis.html") 

p = figure(x_range=(0,6), y_range=(0,6)) 

p.circle(x, y, color="red") 

p.extra_y_ranges = {"foo1": Range1d(start=0, end=11)} 
p.circle(x, y2, color="blue", y_range_name="foo1") 
p.add_layout(LinearAxis(y_range_name="foo1"), 'left') 

p.extra_y_ranges = {"foo2": Range1d(start=21, end=31)} 
p.circle(x, y3, color="green", y_range_name="foo2") 
p.add_layout(LinearAxis(y_range_name="foo2"), 'right') 

p.toolbar_location ="above" 
show(p) 

Während der ursprüngliche Code gut funktioniert, mein geänderter Code doesnt. Ich bin nicht in der Lage, herauszufinden, was für ein Fehler ich mache. Ich bin ein bisschen neu in Bokeh, also bitte führe mich in die richtige Richtung. EDIT: Es gibt keine Ausgabe, wenn ich die dritte Y-Achse hinzufüge. Aber es funktioniert mit nur 2 Achsen auf der linken Seite.

+0

nicht sicher, warum jemand zu schließen gestimmt hat, ist dies eine durchaus vernünftige Frage. – bigreddot

Antwort

1

Das Problem ist, dass Sie nicht das Hinzufügen eines weiteren y-Bereich — durch ein neues Wörterbuch zu p.extra_y_ranges Neuzuweisung, sind Sie die alte ersetzt, vollständig. Dies führt zu Problemen, wenn die hinzugefügte Achse erwartet, dass der Bereich "foo1" existiert, aber Sie haben ihn weggeblasen. Der folgende Code funktioniert wie erwartet:

from bokeh.plotting import output_file, figure, show 
from bokeh.models import LinearAxis, Range1d 

x = [1,2,3,4,5] 
y = [1,2,3,4,5] 
y2 = [10,9,8,7,6] 
y3 = [23,24,25,26,27] 

output_file("twin_axis.html") 

p = figure(x_range=(0,6), y_range=(0,6)) 

p.circle(x, y, color="red") 

p.extra_y_ranges = {"foo1": Range1d(start=0, end=11)} 
p.circle(x, y2, color="blue", y_range_name="foo1") 
p.add_layout(LinearAxis(y_range_name="foo1"), 'left') 

# CHANGES HERE: add to dict, don't replace entire dict 
p.extra_y_ranges["foo2"] = Range1d(start=21, end=31) 

p.circle(x, y3, color="green", y_range_name="foo2") 
p.add_layout(LinearAxis(y_range_name="foo2"), 'right') 

p.toolbar_location ="above" 
show(p) 

enter image description here

+0

Ah! Jetzt habe ich die Grundlagen verstanden. Vielen Dank. Und Danke für die Entwicklung von Bokeh. Ich liebe es. – revoltman

+0

Wenn Sie upvote und/oder markieren können, würde das auch geschätzt werden: D – bigreddot

+0

Kein upvote wegen meines Mangels an "Reputation", aber markiert es richtig. Thnx. – revoltman

Verwandte Themen