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
相关产品推荐
相关产品推荐

