Python Bokeh甜甜圈图类别,子类别均值计算

时间:2018-09-11 16:15:19

标签: python-3.x data-visualization bokeh data-science

我正在使用以下代码绘制bokeh甜甜圈图,以可视化不同类别和子类别的平均价格。

d = Donut(train.groupby(['main_cat','sub_cat']).price.mean(), hover_text='mean',width=500,height=500)
show(d)

对于sub_cat,值是正确计算的,但对于main_cat,不是显示main_cat的平均值,而是显示特定main_cat下sub_cat的均值之和。应该对bokeh代码或python代码进行什么更改以正确显示平均值main_cat? 非常感谢您的支持。

1 个答案:

答案 0 :(得分:1)

可能没有办法。 Donut是旧的bokeh.charts API的一部分,该API已被弃用,随后于去年从Bokeh中删除。特别是,任何问题,问题或缺少的功能将永远不会做任何其他工作。它是废弃且未维护的,不应使用。如果要使用散景来显示甜甜圈图,则可以使用annular_wedge字形来明确显示甜甜圈片:

from math import pi

import pandas as pd

from bokeh.io import output_file, show
from bokeh.palettes import Category20c
from bokeh.plotting import figure
from bokeh.transform import cumsum

x = { 'United States': 157, 'United Kingdom': 93, 'Japan': 89, 'China': 63,
    'Germany': 44, 'India': 42, 'Italy': 40, 'Australia': 35,
    'Brazil': 32, 'France': 31, 'Taiwan': 31, 'Spain': 29 }

data = pd.Series(x).reset_index(name='value').rename(columns={'index':'country'})
data['angle'] = data['value']/data['value'].sum() * 2*pi
data['color'] = Category20c[len(x)]

p = figure(plot_height=350)

p.annular_wedge(x=0, y=1, inner_radius=0.2, outer_radius=0.4,
        start_angle=cumsum('angle', include_zero=True), end_angle=cumsum('angle'),
        line_color="white", fill_color='color', legend='country', source=data)

show(p)

enter image description here