如何在箱线图中突出显示某些记录

How to highlight certain records in boxplot

我有一个包含两列的 df,一列包含 ID,另一列包含值。

示例:

ID    value
x13   50
f24   24
s32   4
x75   199

目前,我制作箱线图的代码是:

import matplotlib
fig = plt.figure(1, figsize=(9, 6))
ax = fig.add_subplot(111)
bp = ax.boxplot(df["value"])
fig.savefig('fig1.png', bbox_inches='tight')

但是,我想在箱线图中突出显示 ID 列中的 id 以 "x" 开头的某些记录。我不在乎突出显示的样子,例如可以是点或线。

您可以创建一个掩码(使用 here 所示的方法)来查找 IDx 开头的行,然后使用它来绘制值,例如,散点图如下所示。这里 [1] 指的是 x 位置,它在您的案例中的所有点都保持不变。

ax = fig.add_subplot(111)
bp = ax.boxplot(df["value"])

mask = df.ID.str.startswith('x', na=False)
ax.scatter([1]*len(df[mask]['value']), df[mask]['value'], 
           marker='x', s=200, color='r')