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

Python绘制多分类数据:对比7月、10月各Cluster对应的Count数值

7月与10月Cluster分布对比Python可视化实现

前置依赖

需要先安装用到的第三方库:
pip install pandas matplotlib seaborn

实现逻辑

  • 先对原始数据做聚合处理:原始数据中同月份同Cluster存在多条Count记录,先求和得到每个月份每个Cluster的总Count值,不需要聚合可以跳过该步骤
  • 可根据需求选择两种可视化形式:
    • 分组柱状图:相同Cluster的两个月份数值并排展示,方便直接对比同一类别的月度差异
    • 分面柱状图:每个月份单独一个子图展示全部Cluster的分布,方便看单月的整体分布情况

完整代码

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

# 1. 加载并处理数据
raw_data = [
    [7, 'Linux', 42],
    [7, 'Linux', 56],
    [7, 'Pct', 6],
    [7, 'Pct(C)', 11],
    [7, 'Memory', 28],
    [10, 'Latency', 73],
    [10, 'Linux', 47],
    [10, 'Pct', 21],
    [10, 'Pct(C)', 18],
    [10, 'Swap', 41],
    [10, 'Protection ', 509]
]
df = pd.DataFrame(raw_data, columns=['Month', 'Cluster', 'Count'])
# 聚合同月份同Cluster的Count总和,若不需要聚合可删除下一行
df_agg = df.groupby(['Month', 'Cluster'], as_index=False)['Count'].sum()
df_agg['Month'] = df_agg['Month'].astype(str)

# 2. 可视化方案1:分组柱状图(适合同Cluster跨月对比)
plt.figure(figsize=(12, 6))
sns.barplot(data=df_agg, x='Cluster', y='Count', hue='Month', palette='Set2')
plt.title('7月与10月各Cluster Count对比', fontsize=14)
plt.xlabel('Cluster类别', fontsize=12)
plt.ylabel('总Count数值', fontsize=12)
plt.xticks(rotation=45)
# 若Protection数值过大导致其他类别对比不明显,可开启下方对数坐标配置
# plt.yscale('log')
plt.tight_layout()
plt.show()

# 3. 可视化方案2:分面柱状图(适合看单月分布)
g = sns.FacetGrid(df_agg, col='Month', height=5, aspect=1.2)
g.map(
    sns.barplot, 
    'Cluster', 'Count', 
    palette='Set3', 
    order=df_agg['Cluster'].unique()
)
g.set_xticklabels(rotation=45)
g.set_axis_labels('Cluster类别', '总Count数值')
g.fig.suptitle('7月与10月各Cluster分布', y=1.05)
plt.tight_layout()
plt.show()

可选调整项

  • 可通过修改palette参数调整配色,修改figsize调整画布大小
  • 可自行添加数值标签,在柱状图上显示具体Count数值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 08:54:04