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

如何按类别创建散点图并排序坐标轴值?含Python实现需求

用Seaborn实现符合需求的散点图解决方案

以下是针对你的需求的完整实现步骤,解决轴排序、数据分类、点大小调整和图例设置的问题:

步骤1:导入依赖库

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

步骤2:数据预处理(解决轴排序+统计计数)

先处理数据的有序性,同时统计每个(学年、班级、主题)组合的活动次数:

# 假设你的数据表已读取为data DataFrame,这里先模拟示例数据
data = pd.DataFrame({
    '活动学年': ['2021-2022', '2021-2022', '2022-2023', '2020-2021', '2022-2023', '2021-2022', '2020-2021', '2022-2023'],
    '学校班级': ['初一1班', '初二2班', '初一1班', '初三3班', '初二2班', '初一1班', '初二2班', '初一1班'],
    '文化活动主题': ['读书节', '艺术节', '读书节', '科技节', '艺术节', '读书节', '科技节', '艺术节']
})

# 1. 自定义学年排序(按时间先后),解决x轴排序问题
year_order = sorted(data['活动学年'].unique(), key=lambda x: int(x.split('-')[0]))
data['活动学年'] = pd.Categorical(data['活动学年'], categories=year_order, ordered=True)

# 2. 自定义班级排序(按年级+班级号),解决y轴排序问题
class_order = sorted(data['学校班级'].unique(), key=lambda x: (x[:2], int(x[2:-1])))
data['学校班级'] = pd.Categorical(data['学校班级'], categories=class_order, ordered=True)

# 3. 统计每个组合的活动次数,用于调整点大小
count_data = data.groupby(['活动学年', '学校班级', '文化活动主题']).size().reset_index(name='活动次数')

步骤3:绘制散点图(解决分类、点大小、图例)

plt.figure(figsize=(10,6))
# 核心绘图代码
sns.scatterplot(
    data=count_data,
    x='活动学年',
    y='学校班级',
    hue='文化活动主题',  # 按主题分类上色
    size='活动次数',     # 按活动次数调整点大小
    sizes=(150, 800),  # 控制点的大小范围
    alpha=0.7,         # 增加透明度避免点重叠遮挡
    palette='Set2'     # 可选配色方案,也可以自定义颜色
)

# 调整图例位置,避免遮挡图表
plt.legend(bbox_to_anchor=(1.05, 1), loc='upper left', title='文化活动主题\n(点大小=活动次数)')

# 添加图表标签和标题
plt.title('各学年班级文化活动分布统计', fontsize=14)
plt.xlabel('活动学年', fontsize=12)
plt.ylabel('学校班级', fontsize=12)

# 自动调整布局,确保图例完整显示
plt.tight_layout()
plt.show()

关键问题解决说明

  • 轴排序:通过pd.Categorical将学年、班级设置为有序类别,指定自定义排序规则,替代默认的字母排序。如果你的数据学年/班级格式不同,只需修改排序逻辑即可。
  • 数据分类:使用hue参数绑定「文化活动主题」,自动为不同主题分配不同颜色,实现分类展示。
  • 点大小调整:先通过groupby统计每个组合的活动次数,再用size参数绑定该计数字段,sizes参数控制大小范围,让次数多的点更醒目。
  • 图例设置:通过bbox_to_anchor将图例移到图表外侧,避免遮挡,同时自定义图例标题,让含义更清晰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 06:02:16