Панды, Matplotlib и гистограмма с накоплением с 3 значениями - PullRequest
0 голосов
/ 07 ноября 2018

У меня есть следующий код, представляющий 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

1 Ответ

0 голосов
/ 08 ноября 2018

Это работает для меня.

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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...