Метки Q1, Q2, Q3, min и max на горизонтальном блоке и графике усов на python

#python #matplotlib #boxplot

#python #matplotlib #boxplot

Вопрос:

Я хочу пометить горизонтальный прямоугольник и график усов, пометив его Q1, Q2, Q3, min и max. На этом сайте есть много ответов, но каждый ответ сосредоточен на вертикальном прямоугольнике и графике усов. Это мои коды следующим образом:

 import matplotlib.pyplot as p<
import seaborn as sns;sns.set()
from numpy import *;

fig, (ax1,ax2) =plt.subplots(2)
a = 1000 random.randn(1000)
print(a)
red_square = dict(markerfacecolor='r', marker='s')
ax1.boxplot(a, vert=False, flierprops=red_square)
plt.show()
  

Можете ли вы мне помочь, пожалуйста?
введите описание изображения здесь

Ответ №1:

Вы можете использовать boxplot_stats из matplotlib, чтобы получить Q1, Q2 и медиану (или вы вычисляете сами в основном). Минимальное и максимальное значения не включены, и вы должны это вычислить. Должно работать что-то примерно такое, как показано ниже:

 import matplotlib.pyplot as p<
import seaborn as sns;sns.set()
from numpy import *;

fig,ax1 =plt.subplots(1)
a = 1000 random.randn(1000)

red_square = dict(markerfacecolor='r', marker='s')
ax1.boxplot(a, vert=False, flierprops=red_square)

from matplotlib import cbook
data = cbook.boxplot_stats(a)

values = [data[0][i] for i in ['q1','med','q3']]   [min(a),max(a)]
for v in values:
    ax1.text(v,1.2,str(round(v,1)),fontsize=8,horizontalalignment='center')
  

введите описание изображения здесь