gpt4 book ai didi

python - matplotlib 中的条形图使用颜色图

转载 作者:行者123 更新时间:2023-12-03 21:10:29 25 4
gpt4 key购买 nike

我有一个包含两列的 df:

  • y:y 轴的不同数值
  • 天:四个不同天的名称(星期一、星期二、星期三、星期四)

  • 我还有一个我自己制作的具有四种不同颜色的颜色图,它是一个 ListedColorMap 对象。
    我想创建一个条形图,其中 x 轴为四个类别(星期几),y 轴为它们对应的值。同时,我希望每个条使用我的颜色图都有不同的颜色。
    这是我用来构建条形图的代码:
    def my_barchart(my_df, my_cmap):
    fig = plt.figure()
    ax = fig.add_axes([0,0,1,1])
    ax.bar(my_df['days'], my_df['y'], color=my_cmap)
    return fig
    但是,我收到以下错误:“'ListedColormap' 类型的对象没有 len()”,所以我似乎没有正确使用 my_cmap。
    如果我从函数中删除它并运行它,我的条形图看起来不错,只是所有条形都具有相同的颜色。所以我的问题是:在条形图上使用颜色图的正确方法是什么?

    最佳答案

    color 参数需要一个字符串或一个 RGB[A] 值(它可以是一种颜色,也可以是一个颜色序列,其中每个数据点都有一个颜色)。颜色图通常可以使用 [0, 1] 范围内的浮点数调用。
    因此,您要做的是为每个条形取您想要的颜色值,将它们缩放到范围 [0, 1],然后使用这些重新缩放的值调用 my_cmap
    因此,举例来说,您希望颜色对应于 y 值(条形的高度),那么您应该像这样修改您的代码(假设您之前已经调用了 import numpy as np):

    def my_barchart(my_df, my_cmap):
    rescale = lambda y: (y - np.min(y)) / (np.max(y) - np.min(y))

    fig = plt.figure()
    ax = fig.add_axes([0,0,1,1])
    ax.bar(my_df['days'], my_df['y'], color=my_cmap(rescale(my_df['y'])))
    return fig
    这是使用 color 参数和 cmap 输出的自包含最小示例:
    import matplotlib.pyplot as plt
    import numpy as np

    x = np.array([1, 2, 3])
    y = np.array([4, 5, 6])

    my_cmap = plt.get_cmap("viridis")
    rescale = lambda y: (y - np.min(y)) / (np.max(y) - np.min(y))

    plt.bar(x, y, color=my_cmap(rescale(y)))
    plt.savefig("temp")
    输出:
    enter image description here

    关于python - matplotlib 中的条形图使用颜色图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64068659/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com