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

matplotlib住房经纬度散点图转换为plotnine实现方法

plotnine复现圣地亚哥区域经纬度散点图实现方案

初始代码未达到预期效果的核心偏差点:

  • 点透明度误设为0.1,目标值为0.4
  • 点大小直接映射原始population字段,未按要求做除以100的缩放
  • 未指定(10,7)的画布尺寸
  • 未配置大小图例的标注文本
  • 未显式匹配所有matplotlib版本的参数逻辑

完整可运行代码如下:

# 导入依赖
import pandas as pd
import requests
import io
from plotnine import (
    ggplot, geom_point, aes, scale_color_cmap,
    theme, scale_size_continuous
)

# 加载住房数据集
url = "https://raw.githubusercontent.com/ageron/handson-ml2/master/datasets/housing/housing.csv"
download = requests.get(url).content
housing = pd.read_csv(io.StringIO(download.decode('utf-8')))

# 生成完全匹配matplotlib版本效果的可视化
(
    ggplot(housing, aes(
        x='longitude',
        y='latitude',
        size='population/100',
        color='median_house_value'
    ))
    + geom_point(alpha=0.4)
    + scale_color_cmap(name='jet')
    + scale_size_continuous(name='population')
    + theme(figure_size=(10, 7))
)

参数对应说明:

  • x='longitude', y='latitude' 对应原版本x轴为经度、y轴为纬度的设置
  • alpha=0.4 完全匹配原代码点透明度要求
  • size='population/100' 直接在美学映射层完成人口数除以100的大小缩放,搭配scale_size_continuous(name='population')将大小图例标题设置为指定的population文本
  • theme(figure_size=(10,7)) 匹配原代码画布尺寸要求
  • scale_color_cmap(name='jet') 调用jet色带映射住房价值中位数,plotnine对连续颜色映射会自动生成右侧色条,无需额外配置色条参数
  • plotnine会自动生成整合大小、颜色映射的完整图例,无需手动调用图例显示函数

兼容提示:如果在aes中直接传入字段计算式触发版本兼容报错,可以提前在数据框中生成缩放后的人口列再传入映射:

housing['scaled_pop'] = housing['population'] / 100
# 后续aes中替换size参数为size='scaled_pop'即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 14:51:17