2015-10-08 25 views
5

私はBokehを使用して積み上げ棒グラフを作成しようとしています。ホバー機能を使用して、バーの各部分に関連するデータを表示したいのですが、データの代わりにBokehが '???'を表示します。Bokehのデータツールチップにデータが表示されず、 '???'代わりに

「Sales」というシートの「Example worksheet」というExcelファイルでデータを取得しました。シートは次のようになります。

Year Category Sales 
2016 A   1 
2016 B   1 
2016 C   1.5 
2017 A   2 
2017 B   3 
2017 C   1 
2018 A   2.5 
2018 B   3 
2018 C   2 

私は次のコードを実行してみました:私は(私はそれがトピックに関連はないと思うのPythonコンソールに次のメッセージを取得し、実行した後

import numpy as np 
import scipy as sp 
from bokeh.charts import Bar, output_file, show 
from bokeh.models import HoverTool 
import pandas as pd 

x = pd.read_excel('Example worksheet.xlsx', 'Sales') 
bar = Bar(x, label = 'Year', values = 'Sales', agg = 'sum', stack = 'Category', tools='hover') 
hover = bar.select(dict(type=HoverTool)) 
source = x 
hover.tooltips = [('Category', '@Category'),('Sales', '@Sales')] 
output_file("Expected Sales.html") 
show(bar) 

を、私は)とにかくそれを置く:

(process:4789): GLib-CRITICAL **: g_slice_set_config: assertion 'sys_page_size == 0' failed 

そして、私は、次のチャートを取得し、ブラウザ上:

The stacked bar chart

ご覧のとおり、データは疑問符に置き換えられます。この結果は、Ubuntu 15.04(64ビット)で動作するFF 41.0.1とChromium 45.0.2454.101の両方で得られました。

私はBokehチュートリアルhttp://bokeh.pydata.org/en/latest/docs/user_guide/tools.html#hovertoolを読んでいますが、棒グラフは参照していません。私もStackoverflowでこれを見つけた: Bokeh hover tooltip not displaying all data - Ipython notebook。 質問は関連しているかもしれませんが、率直に言って答えをあまり理解できませんでした。

+0

あなたの質問に対する解決策を見つけましたか? –

+0

はい、あなたの答えはトリックでした。ありがとう! – Uri

+0

ありがとう@Uri!私の答えを受け入れ、それを閉じてポイントをあなたと私に加えてください。宜しくお願いします! –

答えて

1

問題を再現でき、解決策が見つかりました。まず、あなたのDFのレクリエーション:

data = [k.split() for k in 
'''2016 A   1 
2016 B   1 
2016 C   1.5 
2017 A   2 
2017 B   3 
2017 C   1 
2018 A   2.5 
2018 B   3 
2018 C   2'''.split('\n')] 

x = pd.DataFrame(data, columns = ['year','category','sales']) 
x['year'] = x['year'].astype(object) 
x['sales'] = x['sales'].astype(float) 

今すぐ解決策:

from bokeh.charts import Bar, output_file, show 
from bokeh.models import HoverTool 
from bokeh.models import ColumnDataSource  

source = ColumnDataSource(x) 

bar = Bar(x, label='year', values='sales', agg='sum', stack='category', title="Expected Sales by year", tools = 'hover') 
hover = bar.select(dict(type=HoverTool)) 
hover.tooltips = [('Year', '@x'),('Sales', '@y')] 
show(bar) 

次のチャートを生成します。

Bokeh tooltip not displaying data

の追加:

class ColumnDat aSource(* args、** kw)

はおそらく解決の最も重要な部分です(詳細はhereを参照してください)。

+0

@height、$ x、$ y、@x、@yは特に何を参照していますか?私が飛び出すことができる唯一のデータは、値とラベルです。 – boson

+1

'source = ColumnDataSource(x)'が何をしているのか分かりません。なぜなら 'source'はまったく使われていないからです。あなたは詳しく説明できますか? – bluenote10

4

私は同じ問題を抱えていました。私はthis referenceが役に立ちました。販売のためのツールヒントは、あなたの各年の総売上高を与えるだろう@yで​​を置き換え、同様に hover.tooltips = [('Sales', '@height')]

:例えば、​​ジェネリックを使用します。私はスタックされたカテゴリにアクセスするためにツールチップを使用する方法、またはリンクで参照されるColumnDataSourceを使用する方法を理解していません。

+0

これは隠されて直観的なカウンターです:)ありがとう!!! – Dror

関連する問題