pythonでBokehのライブラリを使い、グラフを描画させてウェブブラウザに表示させています。
マウスオーバーしたときに該当データを表示させたいのですが、添付の写真のように数値が表示されません。
期間のところには、'31-Dec-2018'のような形で表示させたいと考えています。
Bokehのhovertoolの使い方がまずいとは思うのですが、解決策が見つけられていません。
よろしくお願いいたします。
python
1from bokeh.io import output_file, show 2from bokeh.layouts import row, column 3from bokeh.models import ColumnDataSource, HoverTool 4from bokeh.plotting import figure 5from bokeh.transform import dodge 6 7#該当のリスト 8periods=['31-Dec-2018', '31-Mar-2019', '30-Jun-2019', '30-Sep-2019', '31-Dec-2019'] 9Total_revenue =[84370000000, 57920000000, 53740000000, 63940000000, 91720000000] 10Gross_sales_profit =[23030000000, 13240000000, 11490000000, 15480000000, 25300000000] 11NetIncome_Value =[19970000000, 11560000000, 10040000000, 13690000000, 22240000000] 12company_name = 'Apple Inc' 13data = {'期間' : periods, 14 '売上':Total_revenue, 15 '営業利益': Gross_sales_profit, 16 '純利益': NetIncome_Value} 17source = ColumnDataSource(data= data) 18 19#グラフの上下にマージンをつくるための小細工 20y_min = min(Gross_sales_profit) 21if min(Gross_sales_profit) <= 0 or min(NetIncome_Value) <= 0 : 22 if min(Gross_sales_profit) <= min(NetIncome_Value) : 23 y_min = min(Gross_sales_profit) 24 else : 25 y_min = min(NetIncome_Value) 26else : 27 y_min =0 28 29#グラフ描画 30p = figure(x_range=periods, y_range=((y_min*1.1), (max(Total_revenue)*1.2)),sizing_mode="scale_width", plot_height=400, title=company_name +" 売上高/営業利益/純利益", 31 toolbar_location=None, tools="") 32 33p.vbar(x=dodge('期間', -0.25, range=p.x_range), top='売上', width=0.2, source=source, 34 color="#4331F5", legend_label="売上") 35 36p.vbar(x=dodge('期間', 0.0, range=p.x_range), top='営業利益', width=0.2, source=source, 37 color="#F0BE2C", legend_label="営業利益") 38 39p.vbar(x=dodge('期間', 0.25, range=p.x_range), top='純利益', width=0.2, source=source, 40 color="#e84d60", legend_label="純利益") 41 42#ホバーツール、これが問題か?? 43TOOLTIPS1 = [ 44 ('期間', '@期間'), 45 ('売上', '@売上'), 46 ('営業利益', '@営業利益'), 47 ('純利益', '@純利益') 48] 49 50p.add_tools(HoverTool(tooltips=TOOLTIPS1)) 51p.x_range.range_padding = 0.1 52p.xgrid.grid_line_color = None 53p.add_layout(p.legend[0], "below") 54p.legend.orientation = "horizontal" 55 56show(p, sizing_mode="scale_width") 57output_file(company_name + ".html") 58コード
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/09 17:07