我有熊猫系列:
function formatStation($number){
$number = sprintf('%06.2f', $number);
$number = preg_replace('/([0-9])([0-9]{2}\.[0-9]{2})/', '$1+$2', $number);
return $number;
}
我想在Bokeh中绘制条形图:>>> etypes
0 6271
1 6379
2 399
3 110
4 4184
5 1987
。但是对于图例,我只得到p = Bar(etypes)
索引号,我试图用这个字典解密:
etypes
将其传递给标签参数:legend = {
0: 'type_1',
1: 'type_2',
2: 'type_3',
3: 'type_4',
4: 'type_5',
5: 'type_6',
}
,但它没有效果。传递p = Bar(etypes, label=legend)
也不起作用。
如何在散景条形图中为pandas系列添加自定义图例?
答案 0 :(得分:2)
* Bokeh项目维护者的注意事项:这个答案指的是一个过时的,已弃用的API。有关使用现代和完全支持的Bokeh API创建条形图的信息,请参阅其他响应。
将系列转换为DataFrame,将图例添加为新列,然后在引号中引用该列名称。例如,如果您调用数据框' etypes',数据列'值'以及您的图例列'图例':
p = Bar(etypes, values='values', label='legend')
如果绝对必须使用系列,可以将系列传递给数据对象,然后将其传递给散景图。例如:
legend = ['type1', 'type2', 'type3', 'type4', 'type5', 'type6']
data = {
'values': etypes
'legend': legend
}
p = Bar(data, values='values', label='legend')
答案 1 :(得分:1)
bokeh.charts
API(包括Bar
)已弃用,并于2017年从Bokeh中删除。它不受维护且不受支持,此时不应出于任何原因使用。使用您的数据的图例条形图可以使用支持良好的bokeh.plotting
API完成:
from bokeh.palettes import Spectral6
from bokeh.plotting import figure, show
types = ["type_%d" % (x+1) for x in range(6)]
values = [6271, 6379, 399, 110, 4184, 1987]
data=dict(types=types, values=values, color=Spectral6)
p = figure(x_range=types, y_range=(0, 8500), plot_height=250)
p.vbar(x='types', top='values', width=0.9, color='color', legend="types", source=data)
p.xgrid.grid_line_color = None
p.legend.orientation = "horizontal"
p.legend.location = "top_center"
show(p)
有关bokeh.plotting
中对条形图和分类图的大幅改进支持的详细信息,请参阅广泛的用户指南部分Handling Categorical Data