2017-02-09 10 views
2

にリンクされていないと私は私の問題を説明するためのイメージに参加してきました:ツイン軸を持つプロットを作成しますが、範囲が一緒に、オートスケーリング

  1. グラフを一つだけ軸と一つのデータ系列と、両方の軸を有する
  2. グラフ(下の線は、最初のグラフにおけるものと同じです)。

私はウィジェットとBokehサーバーを使用して、ユーザーがさまざまなデータシリーズを表示するさまざまなオプションで遊んでいるようにしています。

以下のコードでもわかるように、DataRange1dは両方の範囲で使用されていますが、ウィジェットを使用してシナリオを変更すると、両方の軸が自動スケーリングされても、どのような。

私はドキュメントで検索したと私は私の問題に見つけた唯一の解決策は、Range1dまたはDataRange1dに特定の範囲を通過させることです。私は多くのデータシリーズを表示するので、私はこれを行うことができません。そのため、1つの範囲はすべてに合わないでしょう。

ありがとうございます!

コード:

#create plots 
p_balance = figure(width=500, height=300, title='Balance', tools='save') 
p_total_debt = figure(width=500, height=300, title='Total debt', tools='save') 

p_both = figure(width=1000, height=300, title='Both', tools='save') 

#add the second axis 
p_both.y_range = DataRange1d() 
p_both.extra_y_ranges = {'total debt': DataRange1d()} 
p_both.add_layout(LinearAxis(y_range_name='total debt'), 'right') 

#add glyphs 
line_balance = p_balance.line(x=list(range(0,26)), y='y', source=source_balance, color='black', line_width=2) 
line_total_debt = p_total_debt.line(x=list(range(0,26)), y='y', source=source_total_debt, color='black', line_width=2) 

#for the second plot with both series 
line_balance2 = p_both.line(x=list(range(0,26)), y='y', source=source_balance, color='black', line_width=2) 
line_total_debt = p_both.line(x=list(range(0,26)), y='y', source=source_total_debt, color='black', line_width=2, y_range_name='total debt') 

画像1 Image 1

画像2 Image 2

答えて

0

それはできるだけ早くあなたがDatarangeオブジェクトにいくつかの開始値を提供するように動作... 私はデータ範囲が正しく初期化されないため、手動で行う必要があります

あなたはデータを提供していないのでデータを偽った。明示的に開始値と終了値を設定する代わりにmin(your_data)max(your_data)を使用できます。

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

# create plots 
p_both = figure(width=1000, height=300, title='Both', tools='save', toolbar_sticky=False) 

# add the second axis 
p_both.y_range = Range1d(0, 26) 
p_both.extra_y_ranges = {'total_debt': Range1d(start=1000, end=1050)} 

# for the second plot with both series 
line_balance2 = p_both.line(x=range(0, 26), y=range(0, 26), color='black',  line_width=2) 
line_total_debt = p_both.line(x=range(0, 26), y=range(1000 + 0, 1000 + 26), color='red', line_width=2, 
          y_range_name='total_debt') 
p_both.add_layout(LinearAxis(y_range_name='total_debt'), 'right') 

show(p_both) 

enter image description here

+0

@etigrenier。それはあなたの問題を解決しますか? – renzop

関連する問題