在 python 上的水平盒须图上标记 Q1、Q2、Q3、最小值和最大值
Label Q1,Q2,Q3,min and max on horizontal box and whisker plot on python
我想通过标记 Q1、Q2、Q3、最小值和最大值来标记水平盒须图。这个网站上有很多答案,但每个答案都集中在垂直盒须图上。这些是我的代码如下:
import matplotlib.pyplot as plt;
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()
你能帮帮我吗?
您可以使用 matplotlib 中的 boxplot_stats 来获取 Q1、Q2 和中位数(或者基本上您自己计算)。最小值和最大值不包括在内,您必须对其进行计算。大致如下所示的内容应该有效:
import matplotlib.pyplot as plt;
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')
我想通过标记 Q1、Q2、Q3、最小值和最大值来标记水平盒须图。这个网站上有很多答案,但每个答案都集中在垂直盒须图上。这些是我的代码如下:
import matplotlib.pyplot as plt;
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()
你能帮帮我吗?
您可以使用 matplotlib 中的 boxplot_stats 来获取 Q1、Q2 和中位数(或者基本上您自己计算)。最小值和最大值不包括在内,您必须对其进行计算。大致如下所示的内容应该有效:
import matplotlib.pyplot as plt;
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')