[英]How Can I draw a plot of box plots in python (multiple box-plots in one plot)
以下是我擁有的數據集示例:
df = pd.DataFrame(np.array([[1,40], [2, 51], [3, 59], [4, 10], [5, 30], [7, 20], [9, 21], [13, 30], [15, 70], [2, 81]]),columns=['A', 'B')
根據 AI 列中的值定義了三個組:
Group_1A = df[(df['A'] >= 0) & (df['A'] <= 3)]
Group_2A = df[(df['A'] >= 4) & (df['A'] <= 7)]
Group_3A = df[(df['A'] >= 9) & (df['A'] <= 15)]
對於 column BI 也有如下三組:
Group_1B = df[(df['B'] >= 10) & (df['B'] <= 30)]
Group_2B = df[(df['B'] >= 40) & (df['B'] <= 60)]
Group_3B = df[(df['B'] >= 70) & (df['B'] <= 100)]
現在我需要一個能同時顯示所有 9 個箱形圖的圖。 ……就像下圖。
我嘗試使用 seaborn.boxplot 並嘗試查看是否可以單獨繪制 9 個箱線圖,然后將它們組合在一起,但它沒有用。 例如,我嘗試根據 group1A 和 1B 定義一個新的數據集,如下所示:
df2 = Group_1A[Group_1A[(df['B'] >= 10) & (df['B'] <= 30)]]
fig, ax = plt.subplots(figsize=(9,9))
ax = sns.boxplot(x="B",y="A", data=df2,ax=ax)#,order=order)
這只會給我一個箱線圖(當 A 在 [0-3] 范圍內,B 在 [10-30] 范圍內時)。
我想知道是否有人可以幫助我。
提前致謝
您是否要為每個組繪制“B”的分布?
這段代碼給出了類似於您提供的繪圖的內容,但我可能誤解了這個問題。
df = pd.DataFrame(np.array([[1,40], [2, 51], [3, 59], [4, 10], [5, 30], [7, 20], [9, 21], [13, 30], [15, 70], [2, 81]]),columns=['A', 'B'])
lim_A = [[0,3],[4,7],[9,15]]
lim_B = [[10,30],[40,60],[70,100]]
fig, ax = plt.subplots()
boxes = []
for ypos,a in enumerate(lim_A):
for b in lim_B:
temp = df.loc[(df.A>=a[0])&(df.A<=a[1])&(df.B>=b[0])&(df.B<=b[1])]
boxes.append(ax.boxplot(temp['B'].values, vert=False, positions=[ypos]))
ax.set_ylim(-0.5,(len(lim_A)-1)+0.5)
ax.set_yticks(range(len(lim_A)))
ax.set_yticklabels([f'[{a}–{b}]' for a,b in lim_A])
ax.set_xticks([np.mean(a) for a in lim_B])
ax.set_xticklabels([f'[{a}–{b}]' for a,b in lim_B])
ax.set_xlabel('B')
ax.set_ylabel('A')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.