使用熊猫和散景创建分组的堆积条形图

时间:2019-01-30 18:55:46

标签: python pandas bokeh

我的数据集就像:

   Count     Date   teams sex
    39  2017/12/28    a   m
    26  2019/12/28    b   f
    3   2016/12/28    c   f
    8   2017/12/28    d   m
    1   2019/12/28    f   f
    22  2018/12/28    a   m
    26  2016/12/29    b   m

我想要一张带有性别的堆叠图表,并按团队分组, 每天使用散景图。

我找到了一个答案,但是它使用的是旧的散景图,并且从现在起已弃用。

from bokeh.charts import Bar, output_file, show

p = Bar(df, label='date', values='count', stack='class',  group='user',
    )

1 个答案:

答案 0 :(得分:0)

Bar很久以前已被弃用,随后被完全删除。我强烈建议不要将其与任何最新版本一起使用,也不建议将其与旧版本一起使用。

相反,用户指南的整章介绍了如何制作各种条形图,包括堆叠和​​分组的条形图:Handling Categorical Data

要创建堆叠的,分组的条形图,您需要指定nested categoriesvbar_stack

一个完整的例子是in the docs,但我在这里也复制了一个简化的版本:

from bokeh.core.properties import value
from bokeh.io import show
from bokeh.models import ColumnDataSource, FactorRange
from bokeh.plotting import figure

factors = [
    ("Q1", "jan"), ("Q1", "feb"), ("Q1", "mar"),
    ("Q2", "apr"), ("Q2", "may"), ("Q2", "jun"),
    ("Q3", "jul"), ("Q3", "aug"), ("Q3", "sep"),
    ("Q4", "oct"), ("Q4", "nov"), ("Q4", "dec"),

]

regions = ['east', 'west']

source = ColumnDataSource(data=dict(
    x=factors,
    east=[ 5, 5, 6, 5, 5, 4, 5, 6, 7, 8, 6, 9 ],
    west=[ 5, 7, 9, 4, 5, 4, 7, 7, 7, 6, 6, 7 ],
))

p = figure(x_range=FactorRange(*factors), plot_height=250,
           toolbar_location=None, tools="")

p.vbar_stack(regions, x='x', width=0.9, alpha=0.5, color=["blue", "red"], source=source,
             legend=[value(x) for x in regions])

show(p)

enter image description here