我正试图从此数据绘制堆积的条形图:
SYMBOL COUNT IMPACT
A 1 LOW
B 1 LOW
C 1 LOW
D 1 LOW
E 2 LOW
F 3 LOW
G 3 LOW
I 1 LOW
J 1 MODERATE
A 1 MODERATE
B 2 MODERATE
K 1 MODERATE
L 5 MODERATE
D 1 MODERATE
F 1 MODERATE
H 4 MODERATE
I 1 MODERATE
L 3 HIGH
E 1 HIGH
F 1 HIGH
G 1 HIGH
该想法是制作3个小节(每个可能的影响之一)并将该小节划分为“ SYMBOL”。但是我没有找到无需手动创建字典的方法。任何帮助将不胜感激。
答案 0 :(得分:1)
您需要旋转数据,但是您可以像这样获得堆积的条形图:
数据操作:
plot_df = (df.pivot(index="SYMBOL", columns="IMPACT", values="COUNT")
.fillna(0)
.rename_axis(columns=None))
print(plot_df)
HIGH LOW MODERATE
SYMBOL
A 0.0 1.0 1.0
B 0.0 1.0 2.0
C 0.0 1.0 0.0
D 0.0 1.0 1.0
E 1.0 2.0 0.0
F 1.0 3.0 1.0
G 1.0 3.0 0.0
H 0.0 0.0 4.0
I 0.0 1.0 1.0
J 0.0 0.0 1.0
K 0.0 0.0 1.0
L 3.0 0.0 5.0
绘图:
from bokeh.plotting import figure
from bokeh.palettes import Category10_3
from bokeh.io import show
symbols = list(plot_df.index)
impacts = list(plot_df.columns)
source = ColumnDataSource(plot_df)
p = figure(width=500, height=250, x_range=symbols)
p.vbar_stack(impacts, width=0.7, x="SYMBOL", source=source, color=Category10_3, legend_label=impacts)
p.y_range.start = 0
p.xgrid.grid_line_color = None
p.legend.location = "top_left"
show(p)