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

Seaborn散点图调色板颜色不足:如何结合标记形状区分多季数据

解决Seaborn散点图多季颜色重复并结合标记形状区分的问题

可以通过将季数分组,同时用hue控制分组颜色、style控制标记形状的方式实现,无需创建大量自定义颜色。以下是具体实现方案:

核心思路

把35季划分为若干小组(比如每5季一组),让每个小组对应一种颜色+一种标记形状,既避免颜色重复,又能通过形状进一步区分不同阶段的季数。

修改后的完整代码

import matplotlib.pyplot as plt
import seaborn as sns

# 给DataFrame添加分组列:每5季为一个分组
df['Season Group'] = (df['Season'] - 1) // 5  # 计算结果为0、1、2...对应不同分组

plt.figure(figsize=(20, 8))

# 散点图:同时用hue和style绑定分组变量
sns.scatterplot(
    data=df, 
    x='Episode Number', 
    y='Rating', 
    hue='Season Group', 
    style='Season Group',
    palette='tab10',
    markers=['o', 's', '^', 'D', 'p', '*', 'h'],  # 可选:自定义标记形状,数量匹配分组数即可
    s=50
)
    
# 回归线保持原有配置
sns.regplot(
    data=df, 
    x='Episode Number', 
    y='Rating', 
    scatter=False,
    ci=None,
    line_kws={
        'color':'red', 
        'linestyle':'-', 
        'linewidth':3, 
        'alpha':0.3
    } 
)

# 优化图例位置与标题
plt.legend(title='Season Group', bbox_to_anchor=(1.05, 1), loc='upper left')
plt.xlabel('Episode Number')
plt.ylabel('Rating')
plt.title('The Simpsons Episode Ratings by Season Group')
plt.show()

关键细节

  • 分组逻辑可灵活调整:比如将(df['Season'] -1)//5改为(df['Season'] -1)//4,就能实现每4季一组
  • 不手动指定markers时,Seaborn会自动循环使用默认标记库,足以覆盖35季的分组需求(35季分成7组,默认标记数量足够)
  • 分组后的图例能清晰展示每组对应的颜色和形状,方便观众快速区分不同阶段的季数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 01:05:11