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

如何为每个数组的散点设置delta x偏移?保持最后一组居中

实现散点图分组的差异化偏移效果

我来帮你搞定这个散点图分组偏移的需求!核心思路是给每个分组分配专属的x轴偏移量,让q组保持居中,a-h组向左依次偏移,i-p组向右依次偏移,每组偏移量不同来避免点的重叠,让图表更清晰。

具体实现步骤

  • 定义分组偏移量:根据17个分组的顺序,创建一个偏移数组。q(最后一个分组)偏移量为0;a-h使用递减的负偏移(越靠近q偏移越小);i-p使用递增的正偏移(越远离q偏移越大),这样视觉上会呈现对称分布,q在中间位置。
  • 调整散点x坐标:在绘制散点时,给原始的x值加上对应分组的偏移量,实现位置偏移。
  • 优化代码效率:简化月份数组的生成逻辑,避免不必要的循环。

修改后的完整代码

import matplotlib.cm as cm
import matplotlib
import matplotlib.pyplot as plt
import numpy as np

fig, ax0 = plt.subplots(nrows=1, ncols=1)
months = np.arange(1, 13)
# 简化months_expanded的生成:直接把每个月重复17次,再转成(12,17)的形状
months_expanded = np.tile(months.reshape(-1, 1), (1, 17))

M = np.random.rand(12, 17)
M1 = np.random.rand(12, 17)
datalist = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q']

# 定义每个分组的偏移量:共17个分组
# a-h(前8个):从-0.4到-0.05,步长0.05,递减的负偏移
left_offsets = np.linspace(-0.4, -0.05, 8)
# i-p(中间8个):从0.05到0.4,步长0.05,递增的正偏移
right_offsets = np.linspace(0.05, 0.4, 8)
# q(最后1个):偏移0
offsets = np.concatenate([left_offsets, right_offsets, [0]])

difference = abs(M - M1)

for idx, sub in enumerate(datalist):
    # 给x坐标加上当前分组的偏移量
    x = months_expanded[:, idx] + offsets[idx]
    ax0.scatter(x, difference[:, idx], label=sub)

# 设置颜色映射
colormap = plt.cm.gist_ncar
colorst = [colormap(i) for i in np.linspace(0, 0.9, len(ax0.collections))]
for t, j1 in enumerate(ax0.collections):
    j1.set_color(colorst[t])

# 图表样式设置
ax0.legend(loc='center left', bbox_to_anchor=(1, 0.5))
ax0.yaxis.grid(True)
ax0.xaxis.grid(True)
matplotlib.rcParams.update({'font.size': 30})
fig.set_size_inches(20, 20)

# 保存图片(记得替换成你的输出路径)
# fig.savefig(outfile, bbox_inches='tight')
plt.show()

关键细节说明

  • 偏移量调整:如果你觉得偏移的范围不合适,可以修改linspace里的起始和结束值,比如把-0.4改成-0.3来缩小左偏的幅度,或者调整步长让偏移量的差异更明显。
  • x轴刻度:如果需要让x轴刻度依然显示1-12的整数,可以不用调整刻度,因为偏移后的点只是在刻度附近,不影响刻度的可读性。
  • 颜色映射:保留了你原来的gist_ncar配色,确保每个分组的颜色依然不同。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:22:57