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

求助:如何用Matplotlib/GeoPandas按分数为法国城市坐标地图着色

解决方案:根据分数为法国城市点设置渐变色

直接修改你的代码,通过GeoPandas的plot方法实现按分数映射颜色的需求,以下是完整可运行的代码:

import matplotlib.pyplot as plt
import geopandas as gp

# 基于你的数据集创建GeoDataFrame
tmp_geo = gp.GeoDataFrame(TMP, geometry=gp.points_from_xy(TMP.COM_LONG, TMP.COM_LAT))

# 创建绘图画布与轴
fig, ax = plt.subplots(figsize=(10, 8))
# 按分数映射颜色绘制点
tmp_geo.plot(
    ax=ax,
    column='COM_MARK',       # 指定用评分列控制颜色
    cmap='RdYlGn',           # 红-黄-绿渐变映射,完美匹配0分红、10分绿的需求
    markersize=50,           # 调整点的大小,可根据数据量修改
    edgecolor='black',       # 点的边缘加黑色边框,增强辨识度
    legend=True,             # 显示颜色条
    legend_kwds={
        'label': '城市评分(0-10)',
        'orientation': 'horizontal',
        'pad': 0.05
    }  # 自定义颜色条的标签、方向和间距
)

# 优化图表样式
ax.set_title('法国城市评分分布', fontsize=14)
ax.set_axis_off()  # 隐藏坐标轴刻度,让地图更整洁

plt.show()

关键参数说明

  • column='COM_MARK':告诉GeoPandas用评分列的值来分配每个点的颜色,值越高越趋近绿色,越低越趋近红色。
  • cmap='RdYlGn':Matplotlib内置的颜色映射方案,刚好覆盖从低分到高分的红-黄-绿渐变,完全适配你的需求。
  • legend_kwds:自定义颜色条的显示样式,比如添加中文标签、设置横向布局,让图表更易读。

可选:自定义严格红-绿渐变

如果需要完全严格的0分纯红、10分纯绿,没有中间黄色过渡,可以手动创建颜色映射:

from matplotlib.colors import LinearSegmentedColormap

# 创建纯红到纯绿的自定义渐变
custom_cmap = LinearSegmentedColormap.from_list(
    'red_to_green',
    ['#ff0000', '#00ff00'],
    N=11  # 对应0-10共11个分值等级
)

# 绘图时替换cmap参数即可
tmp_geo.plot(
    ax=ax,
    column='COM_MARK',
    cmap=custom_cmap,
    markersize=50,
    edgecolor='black',
    legend=True,
    legend_kwds={'label': '城市评分(0-10)', 'orientation': 'horizontal'}
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 22:55:16