web-dev-qa-db-ja.com

基本的なボケ棒グラフ

In[21]: from bokeh.charts import Bar, output_file, show
In[22]: dict = {'sec': {u'A': 10, u'B': 20}}
In[23]: df = pd.DataFrame(dict)
In[24]: df
Out[24]: 
   sec
A   10
B   20
In[25]: output_file("bar.html")
In[26]: p = Bar(df)
In[27]: show(p)

AとBのラベルが付いた棒グラフ、サイズ10と20の2本の棒が欲しいです: enter image description here

この例では何もレンダリングされません。

Values =、labels =などでさまざまなバリエーションを試しましたが、データは常にデフォルトで集計されているようです(agg = 'sum')

バーオブジェクトのレベルが高すぎて、必要なものをプロットできませんか(2つのバー、サイズ10と20の名前がAとB)、またはオブジェクトを誤って使用していますか?間違った「フォーマット」を使用しているDataFrameがありますか?インデックスを列に配置する必要がありますか?誰かがその非常に単純なチャートの例を提供できれば、それは素晴らしいことです!

編集:これで動作するようになりました、DataFrameのあまりにも悪いインデックスはラベルになることができません、それは私には論理的に見えました:)

import pandas as pd
from bokeh.charts import Bar
from bokeh.io import output_notebook, show
output_notebook()
dict = {'values': {u'A': 10, u'B': 20}}
df = pd.DataFrame(dict)
df['label'] = df.index
df
p = Bar(df, values='values',label='label')
show(p)
8
euri10

他の答えは時代遅れです。 bokeh.charts AP​​Iは非推奨になり、削除されました。使用しないでください。基本的な(そしてそれほど基本的ではない)棒グラフの場合、ユーザーは カテゴリデータの処理 で説明されているように、安定したbokeh.plottingAPIを使用する必要があります。例として:

from bokeh.io import show, output_file
from bokeh.plotting import figure

output_file("bars.html")

fruits = ['Apples', 'Pears', 'Nectarines', 'Plums', 'Grapes', 'Strawberries']

p = figure(x_range=fruits, plot_height=250, title="Fruit Counts")
p.vbar(x=fruits, top=[5, 3, 4, 2, 4, 6], width=0.9)

p.xgrid.grid_line_color = None
p.y_range.start = 0

show(p)

どちらが得られますか:

enter image description here

上記のユーザーガイドのリンクには、カラーマップ、スタック、グループ化、ネストされたバーを実現する方法、またはPandas DataFrames and GroupBys)から直接作業する方法を示す例が他にもたくさんあります。

14
bigreddot

Bokeh docs を見ると、Barがデータを集約していることがわかります。データフレームをより適切に再定義するのはとても簡単です。 Bar以外のウィジェットを使用することもできますが、少なくとも以下の例は非常に理解しやすく、さらに重要なことに機能します。

from bokeh.charts import Bar
from bokeh.io import save
import pandas as pd
dict = {'values':[10,20], 'names':['A','B']}
df = pd.DataFrame(dict)

p = Bar(df, 'names', values='values', title="test chart")
save(p,'test3.html')

必要なスタイリングはすべてお任せください。

これがお役に立てば幸いです、t。

0
tk.