【问题标题】:Matplotlib : how to plot a horizontal bar chart with color defined by groupsMatplotlib:如何绘制由组定义颜色的水平条形图
【发布时间】:2021-04-23 07:57:57
【问题描述】:

我目前正在努力通过 matplotlib 水平条形图中的一组条形设置颜色。 我有这个数据框作为输入: dataframe

到目前为止,我将此输出作为图表: graph

我想做的是根据组定义条形的颜色,并保持条形按值排序(从最高到最低)。例如,Luc、Shan...(A 组)的条形将显示为红色,B 组将显示为蓝色...

当然,组的数量可以改变(目前有 4 个组,但可能是 5,6 或其他)。我还想添加一个图例。

我已经尝试了很多来解决这个问题,但我在互联网上找不到任何关于我的问题的信息。

【问题讨论】:

    标签: python matplotlib bar-chart


    【解决方案1】:

    Pandas.plot.barh 接受一个颜色参数,它可以是每个表格行的颜色系列(使用.replace(map_group_color) 创建)。图例是使用 matplotlib 补丁添加的,这是一种手动添加图例的标准方式。

    import matplotlib.patches as mpatches
    
    data = pd.DataFrame({"name": ["A", "B", "C"],
                         "value": [1, 5, 3],
                         "group": ["a", "a", "x"]})
    
    data = data.sort_values("value")
    
    map_group_color = {"a": "green", "x": "red"}
    ax = data.plot.barh(x="name", y="value", 
                        color=data.group.replace(map_group_color))
    
    legend_handles = [mpatches.Patch(color=color, label=group)
                      for group, color in map_group_color.items()]
    
    ax.legend(handles=legend_handles)
    
    

    【讨论】:

    • 这正是我想要的。非常感谢。你的解释很清楚
    • @Anto69:如果回答了你的问题,请接受。
    猜你喜欢
    • 2021-11-08
    • 1970-01-01
    • 1970-01-01
    • 2016-11-15
    • 2019-05-25
    • 2022-01-20
    • 2012-08-09
    • 1970-01-01
    • 2021-12-22
    相关资源
    最近更新 更多