Можно ли как-нибудь пометить участки в боксплоте с помощью matplotlib? - PullRequest
0 голосов
/ 12 марта 2019

Есть ли способ обозначить выбросы на графике.как будто я строю графики цен на каждый препарат и пытаюсь найти места с наркотиками с завышенной ценой.поэтому я хочу пометить выбросы названием места, откуда оно принадлежит.Как этого добиться с помощью matplotlib?

1 Ответ

1 голос
/ 12 марта 2019

Boxplot позволяет передавать объект для flierprops.

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

# Mock data from the boxplot demo
spread = np.random.rand(50) * 100
center = np.ones(25) * 50
flier_high = np.random.rand(10) * 100 + 100
flier_low = np.random.rand(10) * -100
data = np.concatenate((spread, center, flier_high, flier_low))

# Set up
fig, ax = plt.subplots()

# flierprops example
red_square = dict(markerfacecolor='r', marker='s')
box = ax.boxplot(data, flierprops=red_square)

Этот простой образец производит:

enter image description here

Если вы хотите что-то пометить, вы можете использовать plt.annotate примерно так:

box = ax.boxplot(data,)

top_points = box["fliers"][0].get_data()
ax.scatter(top_points[0], top_points[1], marker="o")

# Roughly based on https://stackoverflow.com/a/5147430/10553976
ax.annotate("I labeled this", xy=(top_points[0][1], top_points[1][1]),
            xytext=(-20, 20),
            textcoords='offset points', ha='right', va='bottom',
            bbox=dict(boxstyle='round,pad=0.5', fc='yellow', alpha=0.5),
            arrowprops=dict(arrowstyle = '->', connectionstyle='arc3,rad=0'))

И этот образец производит:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...