Как выделить определенные записи в боксплоте - PullRequest
1 голос
/ 01 октября 2019

У меня есть df с двумя столбцами, один с идентификаторами, а другой со значениями.

Пример:

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')

Однако я хотел бы выделить некоторые записи в блокпостегде идентификатор в столбце идентификатора начинается с «х». Мне все равно, как выглядит выделение, например, точки или линии.

1 Ответ

1 голос
/ 01 октября 2019

Вы можете создать маску (используя метод, показанный здесь ), чтобы найти строки, где ID начинается с x, а затем использовать ее для построения значений с использованием, например, точечной диаграммыкак показано ниже. Здесь [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')

enter image description here

...