我想要一个堆叠的水平条形图,对于每个系统更改请求(CR),红色表示不良,绿色表示良好。 #是按系统划分的好/坏CR的计数:
我的数据:
system assessment #
ALPHA bad 4
good 2
BRAVO good 55
bad 28
CHARLIE bad 3
DELTA bad 4
我尝试了
chart = gb.plot.barh(color=chart_colors, stacked=True)
和
gb = df.groupby(group_by).assessment.value_counts(
).unstack(level=-1).nlargest(limit,columns='bad').stack()
rbar = [x for x in gb.unstack(level=-1)['bad']]
gbar = [x for x in gb.unstack(level=-1)['good]]
#
chart = plt.barh(0, rbar, color='r')
chart = plt.barh(1, gbar, left=rbar, color='g')
plt.show()
我想要显示的是按系统是好是坏的
请注意,当我gb.unstack(-1)出现时,
system owner good assmt bad assessment
ALPHA Alice 35 45
BRAVO Bob 15 25
CHARLIE Charly 7 17
DELTA David 15 10
目标是按5个左右的不良评估对结果进行排序,并生成图表:
ALPHA BBBBBBBBBGGGGGGGGGGGGGG
BRAVO BBBBBBBGGGGGGGG
CHARLIE BBBBBGGGGGG
etc.
到目前为止,我无法使用groupby对象执行此操作,但是感觉到我缺少明显的内容。
答案 0 :(得分:0)
如果我正确理解了您的问题,那么这是我的解决方案:
# Given
df = pd.DataFrame({'system':['Alpha', 'Bravo', 'Charlie'],
'good#':[10, 3, 0],
'bad#': [5, 6, 4]})
df
bad# good# system
0 5 10 Alpha
1 6 3 Bravo
2 4 0 Charlie
df = df.sort_values('bad#', ascending=False)
df
bad# good# system
1 6 3 Bravo
0 5 10 Alpha
2 4 0 Charlie
df.set_index('system').plot(kind='barh', stacked=True)