重叠的Python堆叠条形图

Tho*_*tti 2 python matplotlib z-order overlap bar-chart

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

axes.bar(position,data_1,color='g')
axes.bar(position,data_2,color='r')
axes.bar(position,data_3,color='b')
Run Code Online (Sandbox Code Playgroud)

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

che*_*ate 6

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

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()
Run Code Online (Sandbox Code Playgroud)

看起来像这样:

在此输入图像描述