Matplotlib:如何使用组定义的颜色绘制水平条形图

2024-03-28 17:05:44 发布

您现在位置:Python中文网/ 问答频道 /正文

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

到目前为止,我有一个图形输出: graph

我想做的是根据组定义条的颜色,并按值(从高到低)对条进行排序。例如,Luc,Shan…(A组)的条形图将显示为红色,B组显示为蓝色

当然,组的数量可能会发生变化(目前有4个组,但可能是5、6或其他)。我还想添加一个传奇

为了解决这个问题,我做了很多努力,但在网上找不到任何关于我问题的信息


Tags: 数据图形dataframe数量定义排序matplotlib颜色
1条回答
网友
1楼 · 发布于 2024-03-28 17:05:44

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)

enter image description here

相关问题 更多 >