2017-06-30 9 views
0

データによって駆動されるダッシュを含む折れ線グラフを出力しようとしています。私の例は次のとおりです。ただしValueError:Enum( 'solid'、 'dashed'、 'dotted'、 'dotdash'、 'dashdot')のいずれかの要素が必要です

from bokeh.plotting import figure, output_notebook, show 
output_notebook() 

x = [1, 2, 3, 4, 5] 
y = [6, 7, 2, 4, 5] 
z = ['dashed', 'dashed', 'dashed', 'solid', 'solid'] 

p = figure(plot_width=400, plot_height=400) 

p.line(x, y, line_width=2, line_dash=z) 

show(p) 

、これは、その結果:

ValueError: expected an element of either Enum('solid', 'dashed', 'dotted', 'dotdash', 'dashdot'), Regex('^(\d+(\s+\d+)*)?$') or Seq(Int), got ['dashed', 'dashed', 'dashed', 'solid', 'solid']

それは私のデータセットに基づいて線種を設定することは可能ですか?

答えて

0

ライングリフのリストを使用してラインダッシュを設定することはできません。

問題を解決するのに役立つものはいくつかあります。プロットにMultiLineグリフを使用し、データを構成するにはColumnDataSourceを使用してみてください。 MultiLineグリフを使用すると、複数行の各セグメントで変更するいくつかの行プロパティを設定することができます。そのようにセグメントごとにline_colorを変更することはできますが、残念ながらline_dashプロパティは変更できません。

あなたはMultiLineグリフでline_dashプロパティがColumnDataSourceから設定できるようにBokeh's Github上の問題を開いてみてください。

ここでは、解決策の例を示します。上記のコードで

from bokeh.plotting import figure, show 
from bokeh.models import ColumnDataSource 
from bokeh.models.glyphs import MultiLine 

source = ColumnDataSource(data=dict(z=['dashed', 'dashed', 'solid', 'solid'], 
            xs=[[1, 2], [2, 3], [3, 4], [4, 5]], 
            ys=[[6, 7], [7, 2], [2, 4], [4, 5]], 
            color=['green', 'red', 'green', 'green'])) 

p = figure(plot_width=400, plot_height=400) 

glyph = MultiLine(xs='xs', ys='ys', line_color = 'color', line_dash='z', line_width=2) 
p.add_glyph(source, glyph) 

show(p) 

、色はこのセグメントを区別するために使用することができるColumnDataSourceを使用して設定することができるが、line_dash性はまだエラーが発生します。