Skip to main content
 首页 » 编程设计

python之pyplot 带有单个数据点的条形图

2025年05月04日13pengyingh

我有来自对照组和治疗组的数据。 matplotlib 是否能够创建一个条形图,其中条形高度是每个组的平均值与该组中的各个数据点重叠?我想可视化实际数据点的分布,类似于显示的 here .

我考虑过结合使用箱线图和散点图,但我的尝试没有成功。

请您参考如下方法:

这是一个完全按照您提到的方式执行的解决方案:用散点图覆盖条形图。

当然,您可以进一步调整绘图:绘图标题、轴标签、颜色、宽度、散点图的标记形状......

import matplotlib.pyplot as plt 
np.random.seed(123) 
 
w = 0.8    # bar width 
x = [1, 2] # x-coordinates of your bars 
colors = [(0, 0, 1, 1), (1, 0, 0, 1)]    # corresponding colors 
y = [np.random.random(30) * 2 + 5,       # data series 
    np.random.random(10) * 3 + 8] 
 
fig, ax = plt.subplots() 
ax.bar(x, 
       height=[np.mean(yi) for yi in y], 
       yerr=[np.std(yi) for yi in y],    # error bars 
       capsize=12, # error bar cap width in points 
       width=w,    # bar width 
       tick_label=["control", "test"], 
       color=(0,0,0,0),  # face color transparent 
       edgecolor=colors, 
       #ecolor=colors,    # error bar colors; setting this raises an error for whatever reason. 
       ) 
 
for i in range(len(x)): 
    # distribute scatter randomly across whole width of bar 
    ax.scatter(x[i] + np.random.random(y[i].size) * w - w / 2, y[i], color=colors[i]) 
 
plt.show() 

它将产生这张图