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

Matplotlib colormap未应用于散点图且无报错,求助排查问题

问题原因及解决办法

嘿,我一眼就发现问题所在啦!你在调用plt.scatter()的时候只指定了cmap参数,但忘了给c参数——也就是用来映射颜色的数值数据。Matplotlib的cmap(颜色映射)需要一个对应的数值序列来确定每个点的颜色,没有这个数值输入,它就只会用默认的蓝色渲染所有点。

修正后的代码

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.cm as cm

data = pd.read_excel('sample.xls', sheet_name=0)
# 关键:添加c参数,指定用来映射颜色的数值列
plt.scatter(
    x=data['ExpecVida'], 
    y=data['PIBperCapita'], 
    s=data['PopX1000'], 
    c=data['PopX1000'],  # 这里用人口数对应颜色,你也可以换成其他数值列,比如PIBperCapita
    cmap=cm.viridis
)
# 新增颜色条,让颜色和数值的对应关系更直观
plt.colorbar(label='Population (x1000)')
plt.show()

关键修改说明

  • 添加c参数:这是激活颜色映射的核心,你可以选择数据中任意一列数值型数据作为颜色依据,数值越大对应viridis色阶里越亮的颜色。
  • 增加颜色条:plt.colorbar()能帮读者快速理解颜色对应的具体数值,让图表的信息传递更完整。

如果之后想换其他colormap,只要把cm.viridis换成cm.plasma、cm.cividis这类Matplotlib自带的色阶即可~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:37:42