データ可視化ライブラリBokehで、凡例をグラフの外に表示する方法
環境
- Python 3.6.5
- Bokeh 0.13.0
やりたいこと
Bokehを使ってグラフを表示しています。
凡例をグラフ外に表示したいです。
凡例は、line
メソッドのlegend
オプションで指定しています。
import pandas as pd
from bokeh.palettes import Spectral4
from bokeh.plotting import figure, output_file, show
from bokeh.sampledata.stocks import AAPL, IBM, MSFT, GOOG
p = figure(plot_width=800, plot_height=250, x_axis_type="datetime")
p.title.text = 'Click on legend entries to hide the corresponding lines'
for data, name, color in zip([AAPL, IBM, MSFT, GOOG], ["AAPL", "IBM", "MSFT", "GOOG"], Spectral4):
df = pd.DataFrame(data)
df['date'] = pd.to_datetime(df['date'])
p.line(df['date'], df['close'], line_width=2, color=color, alpha=0.8, legend=name)
p.legend.location = "top_left"
p.legend.click_policy="hide"
output_file("interactive_legend.html", title="interactive_legend.py example")
show(p)
https://bokeh.pydata.org/en/latest/docs/user_guide/interaction/legends.html 引用
質問
凡例をグラフ外に表示するには、どのように記述すればよろしいでしょうか?
以下のサイトには、凡例を外に表示する方法が記載されていました。
https://bokeh.pydata.org/en/latest/docs/user_guide/styling.html
legend = Legend(items=[
("sin(x)" , [r0, r1]),
("2*sin(x)" , [r2]),
("3*sin(x)" , [r3, r4]),
], location=(0, -30))
p.add_layout(legend, 'right')
しかし、今の私のコードで、legend
オブジェクトを、どのように取得すればよいかが、分かりませんでした。