You need to enable JavaScript to run this app. Seaborn散点图将price映射为颜色和大小时int无sqrt属性报错问询
优惠活动
大模型
产品
解决方案
定价
更多

Seaborn散点图将price映射为颜色和大小时int无sqrt属性报错问询

报错原因

这个报错确实是数据类型差异导致的:
matplotlib的scatter函数的s参数(控制点大小)在内部渲染逻辑中,需要对传入的大小数值执行平方根运算来统一缩放散点面积,而你传入的price是Python原生int/ numpy int类型,部分版本的numpy + matplotlib组合不支持直接对整数类执行该运算,就会抛出你遇到的属性错误和类型错误。

解决方法

1. 修复类型报错

将price转为浮点类型传入即可解决报错,同时可以给s参数加缩放系数,避免散点过大/重叠,修改后的绘图代码如下:

import matplotlib.pyplot as plt
from matplotlib.ticker import MaxNLocator

plt.scatter(df_Scatter.longitude, 
            df_Scatter.latitude, 
            c=df_Scatter.price, 
            # 转为float解决类型报错,0.3为缩放系数,可根据显示效果自行调整
            s = df_Scatter.price.astype(float) * 0.3)

2. 配置图例为整数格式

不需要修改原始price数据,直接通过色条配置强制图例显示整数即可:

# 添加价格色条
cbar = plt.colorbar()
cbar.set_label('Price')
# 禁用科学计数法和偏移量
cbar.formatter.set_useOffset(False)
cbar.formatter.set_scientific(False)
# 强制色条刻度为整数
cbar.locator = MaxNLocator(integer=True)
cbar.update_ticks()

# 补充坐标轴标签
plt.xlabel('Longitude')
plt.ylabel('Latitude')

plt.show()

如果需要同时显示散点大小对应的图例,手动生成自定义整数标签即可,无需修改原始数据类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 10:45:03