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

