You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Plotnine创建含几何均值、均值、最值的分类柱状图

计算分组统计指标并绘制Plotnine柱状图

1. 统计指标计算

通过pandas分组计算每个X类别的几何均值、均值、最大值、最小值,其中几何均值借助scipy.stats.gmean实现:

import pandas as pd
from scipy.stats import gmean

# 构造数据集
data = pd.DataFrame({
    'X': ['A1', 'A1', 'A1', 'A1', 'A2', 'A2', 'A2', 'A2', 'A3', 'A3', 'A3', 'A3'],
    'B': ['b1', 'b2', 'b3', 'b4', 'b1', 'c1', 'c2', 'b3', 'b4', 'b5', 'b1', 'b3'],
    'Y': [4, 2, 3, 8, 7, 10, 8, 7, 10, 9, 4, 1]
})

# 分组计算四项统计指标
stats_df = data.groupby('X')['Y'].agg(
    几何均值=gmean,
    均值='mean',
    最大值='max',
    最小值='min'
).reset_index()

# 转换为长格式,适配Plotnine绘图需求
stats_long = stats_df.melt(id_vars='X', var_name='统计指标', value_name='数值')

计算得到的统计结果:

X几何均值均值最大值最小值
A13.6342414.2582
A28.0311298.0107
A33.9364976.0101

2. Plotnine柱状图绘制

使用Plotnine创建分组柱状图,样式匹配示例图(每个X类别下展示4个统计指标的柱子,不同指标用颜色区分):

from plotnine import ggplot, aes, geom_col, labs, theme_minimal, theme, element_text, position_dodge

# 构建绘图对象
plot = (
    ggplot(stats_long, aes(x='X', y='数值', fill='统计指标'))
    + geom_col(position=position_dodge(width=0.8), width=0.7)
    + labs(title='各X类别统计指标对比', x='X类别', y='数值', fill='统计指标')
    + theme_minimal()
    + theme(
        title=element_text(size=14, face='bold'),
        axis_title=element_text(size=12),
        legend_title=element_text(size=12),
        axis_text=element_text(size=10)
    )
)

# 展示图表
print(plot)

绘图细节说明:

  • 用position_dodge实现分组柱子并排展示,避免重叠
  • 选用theme_minimal作为基础主题,贴合示例图的简洁风格
  • 调整标题、坐标轴文本的大小与样式,提升图表可读性
  • 通过fill参数区分不同统计指标,自动生成对应图例

内容的提问来源于stack exchange,提问作者kanna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 23:02:51