如何使用pygal绘制熊猫分组值?

时间:2018-12-14 23:50:19

标签: python pandas matplotlib pygal

我有这样的csv:

name,version,color
AA,"version 1",yellow
BB,"version 2",black
CC,"version 3",yellow
DD,"version 1",black
AA,"version 1",green
BB,"version 2",green
FF,"version 3",green
GG,"version 3",red
BB,"version 3",yellow
BB,"version 2",red
BB,"version 1",black

我想绘制一个条形图,在x轴上显示版本,在y轴上显示不同颜色的数量(数量)。
因此,我想按版本对DataFrame进行分组,检查哪些颜色属于特定版本,对颜色进行计数并在pygal bar chart上显示结果。

它应该看起来像这样:

enter image description here

到目前为止我尝试过的事情:

df = pd.read_csv(results)

new_df = df.groupby('version')['color'].value_counts()

bar_chart = pygal.Bar(width=1000, height=600,
                            legend_at_bottom=True, human_readable=True,
                            title='versions vs colors',
                            x_title='Version',
                            y_title='Number')
versions = []    

for index, row in new_df.iteritems():
    versions.append(index[0])
    bar_chart.add(index[1], row)

bar_chart.x_labels = map(str, versions)

bar_chart.render_to_file('bar-chart.svg')

不幸的是,它不起作用,无法将颜色组匹配到正确的版本。

我也尝试使用matplotlib.pyplot,它的工作原理就像是一种魅力:

pd.crosstab(df['version'],df['color']).plot.bar(ax=ax)
plt.draw() 

这同样有效:

df.groupby(['version','color']).size().unstack(fill_value=0).plot.bar()

但是生成的图表对我来说不够准确。我想获得pygal图表。

我也检查过:
How to plot pandas groupby values in a graph?
How to plot a pandas dataframe?

0 个答案:

没有答案