带3个值的Pandas、Matplotlib和堆叠条形图

2024-10-03 04:30:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我有下面的代码代表3个值,我想显示在一个堆积条形图。你知道吗

print(df.groupby(['project']).sum()['no_test_or_requirement'])
print(df.groupby(['project']).sum()['requirement_only'])
print(df.groupby(['project']).sum()['test_and_requirement'])

width = .5
fig, ax = plt.subplots(figsize=(13,9))
plt.ylabel('Count')
plt.xlabel('Project')
ax.yaxis.grid(linewidth=.5)
p1 = ax.bar(df['project'].unique(), df.groupby(['project']).sum()['no_test_or_requirement'], color='y', width=.5)
p2 = ax.bar(df['project'].unique(), df.groupby(['project']).sum()['requirement_only'], color='b', width=.5)
p3 = ax.bar(df['project'].unique(), df.groupby(['project']).sum()['test_and_requirement'], color='r', width=.5)
fig.legend((p1[0], p2[0], p3[0]), ('No Test or Requirement', 'Requirement Only', 'Test and Requirement'))
plt.show()

下面是print语句的输出,它反映了所讨论的三个值。你知道吗

project
ENTMQ      3
ENTMQBR    0
RHDM       1
RHPAM      1
Name: no_test_or_requirement, dtype: int64
project
ENTMQ      13
ENTMQBR     3
RHDM        0
RHPAM       0
Name: requirement_only, dtype: int64
project
ENTMQ      5
ENTMQBR    1
RHDM       0
RHPAM      0
Name: test_and_requirement, dtype: int64

我得到的图表将只显示两个叠加的值,并且仅在其他值不存在时显示“无测试或需求”值。给出的值是正确的;但是,我确实希望看到ENTMQ和ENTMQBR条(3个叠加值)中表示“无测试或需求”。我错过了什么?你知道吗

chart


Tags: orandnotestprojectdfpltrequirement
1条回答
网友
1楼 · 发布于 2024-10-03 04:30:47

这对我有用。你知道吗

df2 = df.groupby(['project']).sum()

df2 = df2.drop(columns=['has_requirement', 'has_testcase'])
ax = df2.plot(kind='barh',stacked=True, figsize=(13,9),
        color=('r','g','b', 'y'))

ax.set_xlabel('Count')
ax.set_ylabel('Project')
ax.xaxis.grid(linewidth=1)
plt.show()

相关问题 更多 >