Python: Barplot with colorbar

后端 未结 1 1336
旧巷少年郎
旧巷少年郎 2021-01-02 09:19

I\'m trying to make a bar plot with a color bar, each bar\'s hight is one variable (y) and each bar should have a color depending on another variable (c).

What I\'ve

相关标签:
1条回答
  • 2021-01-02 09:48

    You are creating a contourf plot inside your bar plot. That makes no sense.

    Instead you would need to create a mappable without any visual representation to supply to the colorbar. This would be a ScalarMappable.

    import matplotlib.pyplot as plt
    from matplotlib.cm import ScalarMappable
    
    data_x = [0,1,2,3]
    data_hight = [60,60,80,100]
    data_color = [1000.,500.,1000.,900.]
    
    
    data_color = [x / max(data_color) for x in data_color]
    fig, ax = plt.subplots(figsize=(15, 4))
    
    my_cmap = plt.cm.get_cmap('GnBu')
    colors = my_cmap(data_color)
    rects = ax.bar(data_x, data_hight, color=colors)
    
    sm = ScalarMappable(cmap=my_cmap, norm=plt.Normalize(0,max(data_color)))
    sm.set_array([])
    
    cbar = plt.colorbar(sm)
    cbar.set_label('Color', rotation=270,labelpad=25)
    
    plt.xticks(data_x)    
    plt.ylabel("Y")
    
    plt.show()
    

    0 讨论(0)
提交回复
热议问题