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

Pandas箱线图散点偏移问题求助:如何正确显示单个数据点

解决Pandas箱线图上散点偏移的问题

问题原因

df.boxplot绘制的箱线图,每个箱线的x轴位置是从1开始的整数(第一列对应x=1,第二列对应x=2,依此类推),但直接用列名columns作为plt.scatter的x参数时,matplotlib会把列名当作分类变量,默认从0开始分配x位置,导致散点整体左移一个单位。

修复方法

方法1:手动指定散点x轴位置

生成从1开始的整数序列对应箱线的位置,替换columns作为x参数:

df_encoded.boxplot(column=columns, rot=90, fontsize=15)
newdata = pd.DataFrame(ndarrX_train[0].reshape(1,-1), columns=columns)
# 生成对应箱线位置的x坐标(从1开始)
x_positions = range(1, len(columns)+1)
plt.scatter(x_positions, newdata.values.flatten(), c='r')
plt.show()

方法2:从箱线图坐标轴提取精准位置

直接从箱线图的坐标轴对象中获取每个箱线的中心位置,适配性更强:

axes = df_encoded.boxplot(column=columns, rot=90, fontsize=15)
newdata = pd.DataFrame(ndarrX_train[0].reshape(1,-1), columns=columns)
# 获取每个箱线的中心x坐标
box_positions = [box.get_x() + box.get_width()/2 for box in axes.artists]
plt.scatter(box_positions, newdata.values.flatten(), c='r')
plt.show()

关键说明

  • newdata.values.flatten()是将单行DataFrame转为一维数组,匹配scatter的y参数格式。
  • 两种方法都能让散点精准对应到对应列的箱线正上方。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 03:22:00