如何用Geopandas按数值为折线着色并添加色标图例?
Geopandas按数值为折线着色并添加色标图例的实现方法
你原来的循环逐个绘制折线的方式没必要,直接借助GeoDataFrame自带的plot方法就能高效实现按数值着色+色标图例的需求,无需手动循环。
核心实现思路
- 确保你的shp文件对应的GeoDataFrame中,存在用来定义颜色的数值型列(比如假设列名为
score,你需要替换成自己实际的列名) - 利用
plot方法的column参数绑定数值列,通过legend=True开启色标图例,同时可自定义颜色映射方案
完整代码示例
import geopandas as gpd import matplotlib.pyplot as plt # 读取 shp 文件 line = gpd.read_file("shapefile.shp") # 创建绘图画布与轴对象(原代码的ax赋值有误,需修正为fig, ax) fig, ax = plt.subplots(figsize=(10, 6)) # 按数值列着色绘制折线并添加色标图例 line.plot( ax=ax, column="score", # 替换为你实际的数值列名 cmap="viridis", # 颜色映射方案,可选coolwarm/RdYlBu等 legend=True, legend_kwds={ 'label': "折线对应数值", # 色标图例的标题 'orientation': "vertical" # 图例方向:垂直(默认)/水平(horizontal) }, linewidth=2 # 可选:设置折线粗细 ) # 自定义图表标题 ax.set_title("按数值着色的折线分布图") plt.show()
关键参数说明
column:指定驱动颜色映射的数值列,Geopandas会自动根据该列的数值区间分配对应颜色cmap:选择matplotlib内置的颜色映射方案,不同方案适合不同场景(比如冷暖色调、渐变色调)legend_kwds:用来精细化调整图例样式,包括标签文字、显示方向、位置等
内容的提问来源于stack exchange,提问作者Sim81
相关产品推荐
相关产品推荐

