如何使用python中的字典创建颜色栏

如何使用python中的字典创建颜色栏,python,matplotlib,Python,Matplotlib,我试图在2D平面上创建一个绘图,其中每个坐标表示一个矩形。矩形将根据该点数据中的类别填充颜色。有独特和有限的类别,我创建了一个{category:color}字典,并成功地填充了矩形。但是,我想在绘图侧显示颜色栏,指示类别对应的颜色 我没有使用matplotlib中可用的cmap填充颜色,而是使用用户定义的字典将颜色映射到类别。因此,我无法使用fig.colorbar来显示colorbar color_map = {'ClassA':'Red','ClassB':'Green','ClassC'

我试图在2D平面上创建一个绘图,其中每个坐标表示一个矩形。矩形将根据该点数据中的类别填充颜色。有独特和有限的类别,我创建了一个{category:color}字典,并成功地填充了矩形。但是,我想在绘图侧显示颜色栏,指示类别对应的颜色

我没有使用matplotlib中可用的cmap填充颜色,而是使用用户定义的字典将颜色映射到类别。因此,我无法使用fig.colorbar来显示colorbar

color_map = {'ClassA':'Red','ClassB':'Green','ClassC':'Yellow'}

def assign_colors(row):

return matplotlib.patches.Rectangle(row[x],row[y],width,height,color=color_map.get(row['Category'])

我需要的只是帮助/文档,其中解释了如何使用字典中的信息在绘图上创建颜色栏。例如,绘图中的颜色栏指定A类-红色(非字符串)、B类-绿色和C类-黄色

我通过使用此函数构建自己的自定义图例,为项目制作了散点图,并做了类似的操作:

def build_legend(data):
    """
    Build a legend for matplotlib plt from dict
    """
    legend_elements = []
    for key in data:
        legend_elements.append(Line2D([0], [0], marker='o', color='w', label=key,
                                        markerfacecolor=data[key], markersize=10))
    return legend_elements
然后,您应该能够在绘制矩形时使用它:

fig,ax = plt.subplots(1)
ax.add_patch(rect) # Add the patch to the Axes
legend_elements = build_legend(color_map)
ax.legend(handles=legend_elements, loc='upper left')
plt.show()
然后,其输出与我创建的图例类似:


谢谢你,麦克斯。这正是我想要的。