使用plotnine绘制堆叠条形图如何正确显示每组求和汇总统计值
问题原因
你的代码问题出在stat_summary默认继承了全局ggplot定义的fill='V2'美学映射,会自动按照V2的分组分别计算每个子组的求和结果,所以显示的是每个堆叠分段的数值,而不是整个V1分组的总和。
解决方法
只需要在stat_summary中关闭美学继承,同时手动指定x、y映射即可,也可以额外调整文本位置避免和柱子重叠,修正后代码如下:
import io import pandas as pd import plotnine as p9 data_string = """V1,V2,value A,a,1 A,b,2 B,a,3 B,b,4""" data = io.StringIO(data_string) df = pd.read_csv(data, sep=",") p9.ggplot(df, p9.aes(x='V1', y='value', fill = 'V2')) + \ p9.geom_bar(stat = 'sum') + \ # 关闭继承全局美学,避免按V2分组,手动指定x和y映射 p9.stat_summary(p9.aes(x='V1', y='value', label ='stat(y)'), fun_y = sum, geom = "text", inherit_aes=False, vjust=-0.2) # 调整文本位置,向上偏移避免和柱子重叠
运行后就会在A、B组的堆叠柱顶部分别显示3、7的总和数值。
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

