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

matplotlib绘制boxplot与叠加scatterplot时标签不对齐如何解决

问题修复方案

错位原因

boxplot和scatter对分类x轴的默认坐标映射规则不一致:

  • plt.boxplot()绘制分类箱线图时,每个箱线对应的x轴坐标默认从1开始递增,第1个箱在x=1、第2个在x=2,以此类推
  • 直接传入字符串列表作为x参数调用plt.scatter()时,每个分类对应的x轴坐标默认从0开始递增,第1个分类在x=0、第2个在x=1,以此类推

二者坐标差1个单位,因此叠加后会出现标签错位。

修复方法

两种方案任选其一即可:

方案1:调整散点的x坐标和箱线图对齐

手动指定散点的x坐标为从1开始的连续整数,匹配箱线图的默认坐标规则:

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

names = ['a','b','c','d','e','f']
df = pd.DataFrame(np.random.rand(6,6), columns=names)

plt.boxplot(df, labels=names)
# 散点x坐标指定为1~6,和箱线图位置对齐
plt.scatter(x=range(1, len(names)+1), y=df.head(1).values[0])
plt.show()

方案2:调整箱线图的x坐标和散点对齐

给箱线图指定positions参数,让箱线坐标从0开始,匹配散点的默认分类坐标规则:

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

names = ['a','b','c','d','e','f']
df = pd.DataFrame(np.random.rand(6,6), columns=names)

# 指定箱线图位置为0~5
plt.boxplot(df, positions=range(len(names)), labels=names)
plt.scatter(names, df.head(1))
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 13:39:02