web-dev-qa-db-ja.com

multi_lineメソッドで作成された図に凡例を追加する方法は?

Multi_lineメソッドで作成された2行を含む図に凡例を追加しようとしています。例:

p = figure(plot_width=300, plot_height=300)
p.multi_line(xs=[[4, 2, 5], [1, 3, 4]], ys=[[6, 5, 2], [6, 5, 7]], color=['blue','yellow'], legend="first")

この場合、凡例は最初の行のみです。凡例がリストとして定義されている場合、エラーが発生します。

p.multi_line(xs=[[4, 2, 5], [1, 3, 4]], ys=[[6, 5, 2], [6, 5, 7]], color=['blue','yellow'], legend=["first","second"])

多くの行に凡例を追加することは可能ですか?

10
user187205

メンテナノートPR#8218 これはBokeh 1.0でマージされ、複数行とパッチの凡例を直接作成できるようにします、ループしたり、個別のline呼び出しを使用したりすることはありません。


_multi_line_は、概念的に単一のものを対象としており、たまたま複数のサブコンポーネントがあります。テキサス州について考えてみてください。これは論理的なことの1つですが、いくつかの異なる(そして互いに素な)ポリゴンがあります。 Patchesを使用して「テキサス」のすべてのポリゴンを描画することもできますが、全体として1つの凡例のみが必要です。凡例は論理的なものにラベルを付けます。複数の線を論理的に異なるものとしてラベル付けする場合は、p.line(..., legend_label="...")を使用してすべてを個別に描画する必要があります。

9
bigreddot

メンテナノートPR#8218 これはBokeh 1.0でマージされ、複数行とパッチの凡例を直接作成できるようにします、ループなし。


大量のデータや大きなテーブルなどがある場合に高速化するには、forループを作成できます。

1)色と凡例のリストを作成します

あなたはいつでもあなたの色のボケパレットをインポートすることができます
bokeh.palettesから「あなたのパレット」をインポートします
このリンクを確認してください: bokeh.palets

colors_list = ['blue', 'yellow']
legends_list = ['first', 'second']
xs=[[4, 2, 5], [1, 3, 4]]
ys=[[6, 5, 2], [6, 5, 7]]

2)あなたの姿

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

3)上記のリストを介してforループを作成し、表示します

for (colr, leg, x, y ) in Zip(colors_list, legends_list, xs, ys):
    my_plot = p.line(x, y, color= colr, legend= leg)

show(p)
12
Leo

最近のリリース(0.12.15以降)では、multi_lineプロットに凡例を追加することが可能です。データソースに「凡例」エントリを追加するだけです。これは、Googleグループディスカッションフォーラムから抜粋した例です。

data = {'xs': [np.arange(5) * 1, np.arange(5) * 2],
        'ys': [np.ones(5) * 3, np.ones(5) * 4],
        'labels': ['one', 'two']}

source = ColumnDataSource(data)

p = figure(width=600, height=300)
p.multi_line(xs='xs', ys='ys', legend='labels', source=source)
4
masta-g3