python 我如何绘制一个单一的数字,但有两个箱线图?

q7solyqu  于 2023-03-28  发布在  Python
关注(0)|答案(2)|浏览(117)

正如我的问题所说,我想知道如何在一个图中绘制两个箱线图。这是我的实际代码:

plt.subplot(1, 2, 1)
bplot2 = plt.boxplot(dff['totlngth'], vert = 1, patch_artist = True)
for box in bplot2['boxes']:
  box.set(facecolor = 'pink')
for median in bplot2['medians']:
  median.set_color('black')
plt.subplot(1, 2, 2)
bplotm2 = plt.boxplot(dfm['totlngth'], vert = None, patch_artist = True)
for box in bplotm2['boxes']:
  box.set(facecolor = 'Lightblue')
for median in bplotm2['medians']:
  median.set_color('black')
plt.yticks([75, 80, 85, 90, 95])

我是python数据分析的初学者,我只是想知道是否有简单的方法来做到这一点,因为我还在慢慢学习。
我知道子情节情节数字分开,但我尝试没有它,并得到了一个单一的数字与两个情节一个在另一个。

goqiplq2

goqiplq21#

是的,但如果你切换到指定图形和轴,这会更容易。下面是对图库示例的最小修改:

import matplotlib.pyplot as plt
import numpy as np

plt.style.use('_mpl-gallery')

# make data:
np.random.seed(10)
D = np.random.normal((3, 5, 4), (1.25, 1.00, 1.25), (100, 3))
E = np.random.normal((2, 1, 5), (1.33, 1.00, 1.50), (100, 3))

# plot
fig, ax = plt.subplots()
BpD = ax.boxplot(D, positions=[2, 4, 6], widths=1.5, patch_artist=True,
                showmeans=False, showfliers=False,
                medianprops={"color": "white", "linewidth": 0.5},
                boxprops={"facecolor": "C0", "edgecolor": "white",
                          "linewidth": 0.5},
                whiskerprops={"color": "C0", "linewidth": 1.5},
                capprops={"color": "C0", "linewidth": 1.5})

BpE = ax.boxplot(E, positions=[1,3,5]) # mostly default options for boxplot 

ax.set(xlim=(0, 8), xticks=np.arange(1, 8),
       ylim=(0, 8), yticks=np.arange(1, 8))

plt.show()

gmol1639

gmol16392#

您可以重构代码以生成包含图形和轴的元组,然后将轴分配给箱线图。

fig, axes = plt.subplots(1, 2)
axes[0].boxplot(dff['totlngth'], vert = 1, patch_artist = True)
axes[1].boxplot(dfm['totlngth'], vert = None, patch_artist = True)
plt.show()

相关问题