Skip to main content
 首页 » 编程设计

python之重叠的python堆叠条形图

2025年05月04日22unruledboy

有没有办法在多个条形图中设置每个数据集的 zorder 在每个 x 位置不同,以便所有信息都可见。

axes.bar(position,data_1,color='g') 
axes.bar(position,data_2,color='r') 
axes.bar(position,data_3,color='b') 

例如,如果蓝色值大于绿色值,则绿色将隐藏在后面,反之亦然。将 alpha 设置为低于 1 的值会通过颜色混合显示 3 种以上的颜色。

请您参考如下方法:

一种方法是在每个条形位置分别对条形进行排序:

import matplotlib.pyplot as plt 
import numpy as np 
 
L = 5 
 
heights_a = 10. + np.random.randn(L) 
heights_b = 10. + np.random.randn(L) 
heights_c = 10. + np.random.randn(L) 
 
position = np.arange(L) 
colors = ['C0', 'C1', 'C2'] 
 
plt.figure() 
 
for x, ha, hb, hc in zip(position, heights_a, heights_b, heights_c): 
    for i, (h, c) in enumerate(sorted(zip([ha, hb, hc], colors))): 
        plt.bar(x, h, color=c, zorder=-i) 
 
plt.show() 

看起来像这样: