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

如何为Seaborn图表的每个X轴刻度分组设置交替背景色?

为Seaborn散点图(stripplot)的X轴刻度分组设置交替背景色

你可以通过Matplotlib的axvspan()函数为每个X轴刻度对应的分组区域绘制交替背景色,以下是修改后的完整代码:

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

# 生成数据
data = {'Days': np.full((48, 5), [6, 7, 8, 9, 10]).reshape(-1),
        'Group': np.full((80, 3), ["Group1", "Group2", "Group3"]).reshape(-1), 
        'Value': np.random.rand(240)}
df = pd.DataFrame(data=data)

fig, ax = plt.subplots(figsize=(20, 10), dpi=80)

# 绘制散点图
sns.stripplot(x=df.Days, y=df.Value, jitter=0, size=5, ax=ax, linewidth=1,
              dodge=True, hue=df.Group, palette="Set1", data=df)

# 设置交替背景色
xticks = ax.get_xticks()
# 定义交替颜色
colors = ['#f0f0f0', 'white']
for i, pos in enumerate(xticks):
    # 计算每个分组区域的左右边界
    left = pos - 0.5
    right = pos + 0.5
    # 绘制垂直背景区域,zorder设为0确保在底层不覆盖数据点
    ax.axvspan(left, right, color=colors[i%2], zorder=0)

plt.show()

关键步骤说明:

  • 获取X轴刻度的位置:ax.get_xticks()会返回每个分类刻度对应的坐标值(此处为0到4,对应Days的6到10)
  • 通过i%2交替选择颜色,实现灰、白循环的背景效果
  • 使用axvspan()绘制覆盖整个Y轴范围的垂直区域,zorder=0将背景置于最底层,避免遮挡散点
  • 颜色可按需调整,比如把浅灰色#f0f0f0换成更深的#e0e0e0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 11:45:40