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

如何简洁创建多组分组直方图?寻求matplotlib批量实现方案

批量绘制按Genre分组的多评分字段直方图

方法1:循环遍历目标评分字段

直接把需要绘制的评分字段做成列表,循环处理每个字段,避免重复写相同的绘图代码:

import matplotlib.pyplot as plt

# 列出所有要绘制的评分字段
score_fields = ['comedy_score', 'suspense_score', 'drama_score']

for field in score_fields:
    # 按genre透视数据并绘制分组直方图,自动带图例
    movies.pivot(columns='genre', values=field).plot.hist(title=f'{field} 按 Genre 分布')
    plt.show()

后续新增评分字段时,只需要往score_fields列表里加字段名就行,不用改绘图逻辑。

方法2:转长格式数据用Seaborn批量生成子图

如果想要更规整的多子图布局,推荐把宽格式数据转成长格式,用Seaborn的分面绘图功能一次性搞定:

import seaborn as sns
import matplotlib.pyplot as plt

# 将多个评分字段转为「评分类型-分数」的长格式,保留genre分组列
long_movies = movies.melt(
    id_vars='genre',
    value_vars=['comedy_score', 'suspense_score', 'drama_score'],
    var_name='评分类型',
    value_name='分数'
)

# 按评分类型分面,每个面内按genre绘制分组直方图
sns.displot(
    data=long_movies,
    x='分数',
    hue='genre',
    col='评分类型',
    kind='hist',
    multiple='dodge'  # 分组直方图并排显示,也可以用'stack'堆叠
)
plt.show()

这种方式会自动生成一个包含所有评分字段的子图网格,每个子图里是对应评分按genre分组的直方图,布局更统一,代码也更简洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 21:06:29