【问题标题】:How to change bar color based on number value in matplotlib如何根据 matplotlib 中的数值更改条形颜色
【发布时间】:2022-01-06 06:56:52
【问题描述】:

我有一个水平条形图,我应该根据水平值将条形慢慢从黄色变为红色。所以X值越大,条形图越红

(我想展示剧情,但由于我的声誉低,我无法上传它的图片)

import matplotlib.pyplot as plt 

x = [3,3,4]
y = [1,2,5]
plt.barh(x,y)
plt.show()

【问题讨论】:

    标签: python matplotlib graph


    【解决方案1】:

    我会做类似的手工制作:

    colorsValue = []
    for value in x:
        if value < LOW_TRESHOLD:
            colorsValue.append('yellow')
        elif value >= HIGH_TRESHOLD:
            colorsValue.append('red')
        else:
            colorsValue.append('orange')
    
    plt.barh(x, y, color = colorsValue)
    

    其中LOW_TRESHOLDHIGH_TRESHOLD 是由您决定的值以及颜色。 matplotlib 颜色列表为here

    这只是向您展示语法的一个最小示例。 Kroshtan 的解决方案也很好,比我自制的解决方案更通用,所以我建议你使用他的解决方案。

    【讨论】:

      【解决方案2】:

      您可以在color 参数中传递一个数组。可以使用 matplotlib 文档中的 cmap 计算此数组的值。

      colors = [(1, 1, 0), (1, 0, 0)]
      my_cmap = LinearSegmentedColormap.from_list(
          'color_map', colors, N=100)
      

      然后你将颜色缩放到你拥有的值:

      rescale = lambda y: (y - np.min(y)) / (np.max(y) - np.min(y))    
      plt.barh(x,y,color=my_cmap(rescale(y)))
      plt.show()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多