2017-06-20 5 views
0

ColumnDataSourceを使用してBokehラインプロット(Bokehバージョン0.12.5)の色を設定したいとします。しかし、ラインプロットでは何もプロットされません。一方、サークルレンダラを使用すると、すべてが期待通りに機能します。以下は、ラインプロットと円プロットの両方を持つサンプルプログラムです。プロットの動作を確認するには、適切な行をコメント化/コメント解除できます。私は、色が明示的に定義され、プロットが完全に機能するラインプロットのコード行も含めました。私はいくつかの同様の質問を尋ねましたが、この問題に対する確かな解決策を見つけることができなかったし、根本的に何かをやっているかどうかを判断できませんでした。ご協力いただきありがとうございます。ColumnDataSourceのBokehラインプロットカラー

# bokeh version 0.12.5 
# run in terminal with: python -m bokeh serve --show line_plot_color.py 

from bokeh.io import curdoc 
from bokeh.models import ColumnDataSource 
from bokeh.plotting import Figure 
from bokeh.layouts import row 

source = ColumnDataSource(data = dict(color = ['green','green','green'], xs = [1,2,3], ys = [1,2,3])) 
fig = Figure(plot_width=300, plot_height=300) 

#r = fig.circle('xs','ys',source = source, size = 12, fill_color = 'color') # works as expected 
r = fig.line('xs','ys',source = source, line_color = 'color') # fails to plot; no errors or warnings in terminal 
#r = fig.line('xs','ys',source = source, line_color = 'green') # works as expected 

layout = row(fig) 
curdoc().add_root(layout) 

答えて

0

まず、bokehサーバーのデバッグに役立つように、Webブラウザに付属のdevtoolsを使用すると非常に便利です。あなたの例のように、devtoolsのコンソールには便利なデバッグ情報が含まれています。

第2に、ドキュメントを見て、線のグリフメソッドは、その色付けの列データソース値を受け取るように設定されていません。 1つのFigureに異なる色の複数の線をプロットする場合は、multi_lineグリフを使用できます。このグリフを使用するには、データソースxsとysをmulti_lineの各行のリストに変更する必要があります。ここに簡単な例があります。

source2 = ColumnDataSource(data = dict(color = ['green','red'], xs = [[1, 2],[2, 4]], ys = [[1, 2],[2, 4]])) 
r = fig.multi_line('xs','ys',source = source2, line_color = 'color') 
関連する問題