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

Matplotlib散点图数据重叠遮挡问题:如何完整显示全类别数据?

解决散点图类别重叠遮挡的方案

一、X轴偏移法(直接解决同一月份的类别显示问题)

给每个气候类别的x值(月份)加上微小偏移量,让同一月份的不同类别点在X轴上错开,避免完全重叠。具体实现如下:

import matplotlib.pyplot as plt

fig, ax = plt.subplots(figsize=(8, 6))

# 给每个气候类别分配X轴偏移量,控制在±0.2范围内,避免偏离月份刻度过多
offsets = {'Sunny': -0.2, 'Hurricane': -0.1, 'Cloudy': 0, 'Rain': 0.1, 'Foggy': 0.15, 'Storm': 0.2}
colors = {'Sunny':'tab:blue', 'Hurricane':'tab:orange', 'Cloudy':'tab:green', 'Rain':'tab:red', 'Foggy':'tab:purple', 'Storm':'tab:brown'}

grouped = df.groupby('Climate')
for key, group in grouped:
    # 为当前组的月份值加上对应偏移
    x_vals = group['month'] + offsets[key]
    ax.scatter(x=x_vals, y=group['eta/km*100'], label=key, color=colors[key], alpha=0.8)

# 保持X轴刻度为1-12,确保月份标识清晰
plt.xticks(range(1, 13))
ax.legend()
plt.show()

说明:偏移量可根据数据密度调整——若类别更多,缩小偏移范围(比如±0.15);同时设置alpha=0.8增加透明度,即使少量重叠也能看到下方的点。

二、其他实用替代方案

如果偏移法不符合你的可视化需求,还可以选择以下方法:

  • 添加透明度:在scatter中设置alpha=0.5,让重叠点显示出深浅,直观体现数据密度,无需调整X轴。
  • 随机抖动:给所有点的x值添加随机微小噪声,适合数据量极大的场景,代码示例:
    import numpy as np
    ax.scatter(x=group['month'] + np.random.uniform(-0.15, 0.15, size=len(group)), 
               y=group['eta/km*100'], label=key, color=colors[key], alpha=0.7)
    
  • 箱线图/小提琴图:若关注的是每个月份+气候类别的数据分布(而非单个点),用箱线图展示中位数、四分位数等指标,彻底避免点重叠。
  • 分面绘图:用seaborn.FacetGrid按气候类别拆分多个子图,每个子图展示对应类别的月份-eta关系,便于对比不同类别的趋势。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 03:32:26