2016-07-29 35 views
0

Ich würde erwarten, dass der folgende Code nur die obere Grenze des Grundstücks y Bereich einzustellen, aber die untere Grenze wird auch auf unerklärliche Weise auf 0:Bokeh Bereich Set Nur noch 1 Bound

import bokeh.plotting as bkp 
import numpy as np 

bkp.output_file("/tmp/test_plot.html") 
fig = bkp.figure(y_range=[None, 100]) # plot y range: 0-100 
# fig = bkp.figure() # plot y range: 50-100 
fig.line(np.linspace(0, 1, 200), np.random.random(200)*50+50) # number range: 50-100 
bkp.save(fig) 

Warum geschieht das? Was ist der einfachste Weg, um nur 1 Bereichsgrenze zu setzen?

+0

dasselbe Problem mit 'Range1d (Start = None, Ende = 100)' – user2561747

Antwort

1

Sie ersetzen den automatischen Bereichsstandard DataRange1d mit einem "dummen" (Nicht-Auto-ranging) Range1d. Legen Sie den Wert end des Standardbereichs fest, den das Diagramm erstellt, ohne den gesamten Bereich zu ersetzen. Oder ersetzen Sie alternativ mit einem neuen DataRange1d.

+0

Danke! 'Import bokeh.models als bkm' und' fig = bkp.figure (y_range = bkm.DataRange1d (end = 100)) 'haben es geschafft. – user2561747

+0

'p.x_range.end = 100' sollte auch funktionieren – bigreddot

0

Die Range1d(start=None, end=100) (wie Sie auch in Ihren Kommentaren beziehen) definiert nur Ihre Ausgangsansicht. Es macht keinen Sinn für einen Bereich, nicht sowohl einen Startpunkt als auch einen Endpunkt zu haben. Wenn Sie also start=None angeben, wird nur der Standardwert 0 verwendet.

denke ich, was Sie versuchen, so etwas wie dies zu tun ist:

Range1D(start=value1, end=value2, bounds=(None, 100))

Dies gibt Ihnen eine Obergrenze von 100 und keine untere Grenze.

Weitere Spezifikationen und Beispiele finden Sie unter docs.

Edit: Okay, ich bin zunächst bereit Ihre Frage, als ob Sie versuchten, die Grenzen zu setzen. Sie möchten stattdessen die Klasse DataRange1D verwenden. Wenn Sie nur sicherstellen, dass die start nicht überschrieben wird, wird standardmäßig "auto" verwendet. Mit anderen Worten, sollte dies tun, was Sie wollen:

DataRange1D(end=100)

+0

Sorry für die Verwirrung. Wenn man sich die Dokumente anschaut, sieht es wie gebunden aus, wie weit der Benutzer auszoomen kann. Ich bin daran interessiert, nur eine Seite der Ausgangsansicht zu setzen - ähnlich wie bei 'plt.ylim (max = 100)'. – user2561747