2016-04-11 41 views
0

私はBokeh.Charts.Barを使用して棒グラフを作成しています。私の問題は、私は15のラベルの伝説のボックスがあり、この凡例ボックスは最も右の列をカバーしていることです(私は伝説= '右上'を使用しています。 '、それは最も左の列をカバーする)。だから私はlegendボックスを動かすためにbackground_fill_data = 0、label_standoff、legend_peddingなどを設定するために凡例オブジェクト(bokeh.models.annotations.legend)を作成しようとしています。そうしないと、グラフを作成しやすくなります。しかし、これまで何も達成していません。ヘルプは本当に感謝しています。ありがとう。Python Bokeh棒グラフ - 凡例ボックスを変更する

bar = Bar(result_df, values='Value', label='Label', legend='bottom_right', 
        stack='Stack', title="Title", bar_width=0.4, 
        color=color(columns='Stack', palette=self.get_colors(5), tools="pan,wheel_zoom,box_zoom,reset,resize,hover") 
     hover = bar.select(dict(type=HoverTool)) 
     hover.tooltips=[("Stack", "@Stack"), (field_name, "@height{" + tooltip_fmt + "}")] 


legend = Legend({ 
       "background_fill_alpha": { 
       "value": 0 
       }, 
       "background_fill_color": { 
       "value": "#ffffff" 
       }, 
       "border_line_alpha": { 
       "value": 1.0 
       }, 
       "border_line_cap": "butt", 
       "border_line_color": { 
       "value": "black" 
       }, 
       "border_line_dash": [], 
       "border_line_dash_offset": 0, 
       "border_line_join": "miter", 
       "border_line_width": { 
       "value": 1 
       }, 
       "glyph_height": 20, 
       "glyph_width": 20, 
       "label_height": 20, 
       "label_standoff": 15, 
       "label_text_align": "left", 
       "label_text_alpha": { 
       "value": 1.0 
       }, 
       "label_text_baseline": "middle", 
       "label_text_color": { 
       "value": "#444444" 
       }, 
       "label_text_font": "helvetica", 
       "label_text_font_size": { 
       "value": "10pt" 
       }, 
       "label_text_font_style": "normal", 
       "label_width": 50, 
       "legend_padding": 10, 
       "legend_spacing": 3, 
       "legends": [], 
       "level": "annotation", 
       "location": "top_right" 
      }) 
bar.add_legend(legend) 
+0

解決策を教えてくれる人は誰ですか? – Leo

答えて

0

Barの呼び出しで凡例kwargをlegend=Noneと設定してみてください。そうすれば、その伝説は決してレンダリングされず、あなたのカスタムを追加すると、それは唯一のものになります。しかし、ちょうど馬鹿。

+0

ありがとうericmark26。 Bokehはプロットの外に伝説を置くことをサポートする新しいバージョンを(6月に)リリースしたので、今この問題は解消されました。 – Leo

+0

それを聞いてうれしいです。私の提案はうまくいったのですか(私の好奇心は満たされなければなりません:))? – ericmarkmartin

+0

私のソリューションはあなたと似ていましたが、最初は 'legend = None'を設定しませんでした。私は伝説と棒グラフを作成しました。次に、new_legend = bar.legends [0] 'という新しい凡例オブジェクトを作成し、次にbar.legends [0] = None'と最後に' bar.add_layout(new_legend、 'right') 'を設定しました。その理由は、棒グラフの凡例を手動で作成する方法がわからなかったためです。凡例オブジェクトはラベルと列の間でマッチするグリフ(この場合は列)を必要とし、バーから個々のグリフを抽出できませんでした。私は十分に説明することを願っています:) – Leo

関連する問題