You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Matplotlib散点图如何为直接传颜色列表的scatter绘制分类图例

实现方案

无需拆分数据集重复调用plt.scatter,通过自定义图例句柄即可实现需求,原有核心绘图逻辑不需要修改。

注意:不建议使用map作为变量名,会覆盖Python内置的map()函数,以下示例将其替换为color_map,功能完全一致。

完整可运行代码

from sklearn.datasets import make_blobs
import matplotlib.pyplot as plt
from matplotlib.lines import Line2D

# 生成测试数据
X, y = make_blobs(n_samples=300, centers=3, random_state=42)

# 核心绘图逻辑和原有写法一致
color_map = {0: 'red', 1: 'green', 2: 'blue'}
plt.scatter(X[:, 0], X[:, 1], c=[color_map[i] for i in y])

# 批量生成对应图例元素
custom_legend = [
    Line2D(
        [0], [0], 
        marker='o',
        color='w',
        markerfacecolor=color,
        markersize=10,
        label=f'类别 {cls_id}'
    ) for cls_id, color in color_map.items()
]

# 挂载图例
plt.legend(handles=custom_legend)
plt.show()

关键说明

  • 代码中Line2D的color='w'作用是隐藏点之间的连接线,只保留圆点标记,符合散点图例的展示需求
  • 批量生成图例的写法适配任意数量的分类,不需要为每个分类单独编写配置
  • 可通过修改markersize参数调整图例中圆点的大小,修改marker参数更换标记形状(例如s为方块、^为三角)

运行后图例效果完全匹配需求:红色圆点对应类别0,绿色圆点对应类别1,蓝色圆点对应类别2,全程仅调用一次plt.scatter,无冗余代码。

内容的提问来源于stack exchange,提问作者NaiveBae

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 13:45:32