Сюжет: Стек бар с тремя колоннами - PullRequest
0 голосов
/ 13 марта 2020

У меня есть ниже датафрейм.

df = '''type    time    gender
0   A   660.0   M
1   B   445.0   M
2   C   68.0    M
3   A   192.2   F
4   B   82.9    F
'''

Я использую приведенный ниже график кода выше данных.

import matplotlib.ticker as mtick
import matplotlib.pyplot as plt

df.groupby(['gender','type']).count().groupby(level=0).apply(
    lambda x:100*x / x.sum()
).unstack().plot(kind='bar',stacked=True)

plt.gca().yaxis.set_major_formatter(mtick.PercentFormatter())
plt.legend( prop={'size': 16})
plt.show()

Мой вывод:

enter image description here

В: Я хочу построить эти два бара с указанием времени данных. Цените это, если кто-то может помочь!

1 Ответ

1 голос
/ 13 марта 2020

Используя matplotlib, затем

(df.pivot_table(index='gender', columns='type', 
               values='time', aggfunc='sum', 
               fill_value=0)
   .apply(lambda x: x/x.sum(), axis=1)
   .plot.bar(stacked=True)
)

Выход:

enter image description here

...