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

Matplotlib图例与散点图元素颜色不匹配 如何同步循环数据的图例色值

问题根源

你现有代码的逻辑存在错误:循环2次的过程中,每次都调用plt.scatter绘制了全量569个数据点,两次生成的散点图层都沿用alldata['target']的全局颜色映射,最终图例的两个标签会复用最后一次散点图层的颜色配置,自然无法和两类样本的实际颜色匹配。

解决方案

推荐两种适配你场景的修正方案:

方案1:直接调用散点对象自动生成图例(无需拆分数据,适配大数据集)

不用循环绘制,直接通过scatter.legend_elements()方法自动提取色值和标签映射,是最简便的写法:

# 仅需绘制一次全量散点
scatter = plt.scatter(svd_pca_eqvt[:,0], svd_pca_eqvt[:,1], c=alldata['target'])
# 手动传入标签和自动生成的图例元素绑定
plt.legend(handles=scatter.legend_elements()[0], labels=['benign', 'malignant'])

方案2:按类别筛选数据后循环绘制(方便自定义各类样式)

如果需要单独调整每一类的散点样式,可先按target值筛选对应样本再绘制:

# 根据你的实际target取值调整映射关系即可
label_map = {0: 'benign', 1: 'malignant'}
for target_val, label in label_map.items():
    # 仅筛选当前类别的样本下标
    sample_idx = alldata['target'] == target_val
    plt.scatter(svd_pca_eqvt[sample_idx, 0], svd_pca_eqvt[sample_idx, 1], label=label)
plt.legend()

两种方案都可以解决图例颜色不匹配的问题,你可以根据后续是否需要自定义单类样式选择即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 22:39:04