【问题标题】:Matplotlib how to make a continuous bar chart having different colours in different sectionsMatplotlib如何制作在不同部分具有不同颜色的连续条形图
【发布时间】:2021-02-08 23:44:23
【问题描述】:

您好,我想制作一个可以连续更改颜色而不叠加的条形图。这是我目前的结果

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()

我想要这样的东西:

【问题讨论】:

  • “一个连续改变颜色而不叠加的条形图”——你的意思是面积图吗?
  • @BigBen 不,我的意思是条形图。我想要一个栏在每次看到某个值时都会更改,如上所示
  • 在matplotlib中,有一个方法叫bar。这允许您在 matplotlib 中制作条形图。不幸的是,这是据我所知。有一个链接可以帮助您制作条形图。 datatofish.com/bar-chart-python-matplotlib/…
  • 可能是我,但我只看到一个堆积条形图。你想要的输出有什么不同?
  • @Mr.T 当我堆叠条形图时,它会将值从 a 排序到 e,我不希望这样。我希望我的栏在看到或检查某个值时改变颜色

标签: python matplotlib data-visualization bar-chart


【解决方案1】:

您的条形重叠。让我们尝试用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])

输出:

【讨论】:

  • 有没有办法将单个“A”作为标签?
  • @JanKlimaszewski 这对我来说是个错误。更新后的代码仅生成一个A
猜你喜欢
  • 2020-12-10
  • 2013-03-02
  • 2016-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-16
  • 2012-07-01
相关资源
最近更新 更多