首页 > 解决方案 > Matplotlib如何制作在不同部分具有不同颜色的连续条形图

问题描述

嗨,我想制作一个连续更改颜色而不堆叠的条形图。这是我目前的结果在此处输入图像描述

import matplotlib.pyplot as plt

data1 = ['A', 'B', 'A', 'C', 'C', 'D', 'E', 'E', 'B']
data2 = ['B', 'A', 'C', 'C', 'C', 'D', 'E', 'E', 'B']
data3 = ['C', 'B', 'C', 'B', 'C', 'D', 'E', 'E', 'B']

for i in range(len(data1) - 1):
    if data1[i] == "A":
        colour = "lightgrey"
        plt.bar('A', data1[i], color=colour, hatch='.')
    elif data1[i] == "B":
        colour = "grey"
        plt.bar('A', data1[i], color=colour, hatch='|')
    elif data1[i] == 'C':
        colour = "darkblue"
        plt.bar('A', data1[i], color=colour, hatch='+')
    elif data1[i] == 'D':
        colour = "pink"
        plt.bar('A', data1[i], color=colour, hatch='*')
    elif data1[i] == 'E':
        colour = "orange"
        plt.bar('A', data1[i], color=colour, hatch='x')

plt.show()

我想要这样的东西:在此处输入图像描述

标签: pythonmatplotlibdata-visualizationbar-chart

解决方案


你的酒吧是重叠的。让我们尝试再次绘制它们bottom

colors = {'A':'lightgrey','B':'grey',
         'C':'darkblue', 'D':'pink',
         'E':'orange'}
hatches = {'A':'.','B':'|','C':'+','D':'*', 'E':'x'}

for i, val in enumerate(data1):
    plt.bar('A', 0.9,, 
            bottom=i, 
            color=colors[val],
            hatch=hatches[val])

输出:

在此处输入图像描述


推荐阅读