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