带有分组条形的熊猫堆积条形图[重复]
Posted
技术标签:
【中文标题】带有分组条形的熊猫堆积条形图[重复]【英文标题】:Pandas stacked barplot with grouped bars [duplicate] 【发布时间】:2015-06-28 11:43:00 【问题描述】:我的数据如下所示:
topic positive negative type
0 88 0.080000 0.030000 source
1 36 0.010000 0.200000 source
2 101 0.350000 0.040000 source
3 78 0.110000 0.090000 source
4 99 0.110000 0.010000 source
5 79 0.000000 0.050000 source
6 24 0.000000 0.160000 source
7 17 0.000000 0.410000 source
8 14 0.090000 0.050000 source
9 29 0.060000 0.030000 source
0 14 0.207071 0.085859 summary
1 17 0.000000 0.738889 summary
2 24 0.000000 0.219349 summary
3 29 0.000000 0.094907 summary
4 36 0.000000 0.255808 summary
5 78 0.108333 0.194444 summary
6 79 0.000000 0.106443 summary
7 88 0.089286 0.041667 summary
8 99 0.098496 0.050877 summary
9 101 0.444444 0.055556 summary
我需要绘制一个条形图,比较每个 topic
的不同 type
的正/负值。我认为它就像 x 轴上带有 topic
的堆叠(正/负)条形图,条形图使用 type
列分组。但我找不到同时构建分组和堆叠条形图的方法。
对于像这样的单一类型(对不起,我没有足够的声誉来发布图片):
polar_data.set_index(['type', 'topic']).xs('summary').plot(kind='bar', stacked=True)
我目前可以比较两种不同类型的唯一方法是使用seaborn.factorplot
并排放置两个图,这无法清楚地注意到趋势。而且我不知道如何使用seaborn
构建堆积条形图。
print_data = pd.melt(polar_data, id_vars=['topic', 'type'], value_name='percent', var_name='polarity')
sns.factorplot("topic", 'percent', 'polarity', row="type", data=print_data, margin_titles=True, kind='bar')
那么有没有办法将它们“合并”而不是并排放置?
【问题讨论】:
我在这里有点困惑。您打算如何比较正值和负值? @JohnGalt 让我解释一下。我想要这样的情节here负/正值堆叠在一起,每个主题有两个这样的条(一个是“摘要”类型,另一个是“源”类型)它们应该彼此靠近分组.所以每个主题都有一组 【参考方案1】:这是使用 matplotlib 的一种方法。我猜 seaborn 会使用相同的结构。
In [3]: polar_data.pivot('topic', 'type')
Out[3]:
positive negative
type source summary source summary
topic
14 0.09 0.207071 0.05 0.085859
17 0.00 0.000000 0.41 0.738889
24 0.00 0.000000 0.16 0.219349
29 0.06 0.000000 0.03 0.094907
36 0.01 0.000000 0.20 0.255808
78 0.11 0.108333 0.09 0.194444
79 0.00 0.000000 0.05 0.106443
88 0.08 0.089286 0.03 0.041667
99 0.11 0.098496 0.01 0.050877
101 0.35 0.444444 0.04 0.055556
所以,现在你可以做正值 -
polar_data.pivot('topic', 'type')['positive'].plot(kind='bar', stacked=True)
对于,你可以做的负值 -
polar_data.pivot('topic', 'type')['negative'].plot(kind='bar', stacked=True)
【讨论】:
以上是关于带有分组条形的熊猫堆积条形图[重复]的主要内容,如果未能解决你的问题,请参考以下文章