基本散景条形图

时间:2015-10-09 13:01:56

标签: bokeh

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标签的条形图,2个尺寸为10和10的条形图。 20: enter image description here

此示例不提供任何内容。

我使用values =,labels = etc尝试了各种变体,但似乎数据总是默认汇总(agg =' sum')

Bar对象是否太高,无法绘制我喜欢的内容(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)

3 个答案:

答案 0 :(得分:11)

其他答案已过时。已弃用并删除bokeh.charts API,不应再使用它。对于基本(非基本)条形图,用户现在应使用Handling Categorical Data中所述的稳定bokeh.plotting API。举个例子:

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和GroupBys。

答案 1 :(得分:1)

如果你看一下Bokeh docs 你看到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')

我让你做你需要的所有样式。

希望这有帮助, 吨。

答案 2 :(得分:-1)

tk的答案给了我一个运行错误。我为绘图添加了import,并将最后一个语句从save更改为show。这对我有用。

from bokeh.plotting import figure, show, output_file
from bokeh.charts import Bar

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

p = Bar(df, 'names', values='values', title="test chart")
show(p)