如何在matplotlib的scatter()中获取颜色条或图例并提取颜色代码?
解决散点图颜色含义展示与颜色代码提取问题
一、正确展示颜色对应的数值含义
你当前代码里用color=f_trains['LstPrice']的方式不对——它会把整列整数直接当作颜色值解析(比如整数会被当成RGB分量的一部分,这不是你要的效果)。正确做法是用c参数指定颜色映射的变量,再搭配颜色条来明确颜色和数值的对应关系:
import matplotlib.pyplot as plt # 绘制散点图,用c绑定颜色映射的列,cmap可选配色方案 ax = f_trains.plot.scatter("Latitude", "Longitude", c="LstPrice", cmap="viridis") # 添加颜色条并标注含义 plt.colorbar(ax.collections[0], label="LstPrice(价格)") plt.show()
运行后会出现颜色条,清晰展示不同颜色对应的LstPrice数值范围。
二、提取每个点对应的颜色代码
如果要获取每个数据点对应的十六进制或RGB颜色代码,可以通过以下步骤实现:
- 基于数据的价格范围创建颜色映射器
- 对每个价格值做颜色转换并存储
# 创建颜色映射对象,匹配价格的最大最小值范围 sm = plt.cm.ScalarMappable(cmap="viridis", norm=plt.Normalize(vmin=f_trains['LstPrice'].min(), vmax=f_trains['LstPrice'].max())) sm.set_array([]) # 为每个价格生成对应的十六进制颜色代码,存入数据框 f_trains['color_code'] = f_trains['LstPrice'].apply(lambda x: plt.colors.to_hex(sm.to_rgba(x))) # 查看结果示例 print(f_trains[['LstPrice', 'color_code']].head())
执行后数据框会新增color_code列,每个价格对应的颜色代码都能直接提取使用。
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

