如何基于分类列表为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
相关产品推荐
相关产品推荐

