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

如何基于分类列表为Matplotlib散点图设置颜色

解决Matplotlib散点图按分类列表设置颜色的问题

你代码里的问题有两个:一是把CATEGORIES用方括号包成了嵌套列表[CATEGORIES],二是Python原生列表没有map()方法,这才导致报错。以下是两种可行的解决方案:

方案1:用列表推导式生成颜色列表

直接遍历分类列表,通过字典映射生成对应颜色的列表,这是最直观的原生Python实现方式:

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
colors = {"Healthy": "green", "Unhealthy": "blue", "Morbid": "red"}
# 遍历分类列表,映射得到对应颜色
color_list = [colors[cat] for cat in CATEGORIES]
# 传入x/y轴数据、颜色列表,以及要求的alpha和size参数
ax.scatter(DATA['A'], DATA['B'], c=color_list, alpha=0.5, s=100)
plt.show()

如果CATEGORIES中可能存在字典未定义的分类值,可改用get()方法设置默认颜色避免报错:

color_list = [colors.get(cat, 'gray') for cat in CATEGORIES]

方案2:转为Pandas Series后使用map()

借助Pandas Series的map()方法完成映射,适合熟悉Pandas操作的场景:

import matplotlib.pyplot as plt
import pandas as pd

fig, ax = plt.subplots()
colors = {"Healthy": "green", "Unhealthy": "blue", "Morbid": "red"}
# 将列表转为Series,调用map方法完成颜色映射
color_series = pd.Series(CATEGORIES).map(colors)
ax.scatter(DATA['A'], DATA['B'], c=color_series, alpha=0.5, s=100)
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 03:07:10