如何使用geopandas内置plot方法按指定列值对绘图进行颜色编码
问题解答
完全可以,geopandas的plot方法原生支持按照指定列的取值进行颜色编码,不需要自己写循环分组绘图,你的简洁写法思路是完全可行的,只需要调整参数即可。
1. 分类变量自定义颜色映射(匹配你现有循环的需求)
如果你要配色的列是离散分类值,且需要自定义每个类别对应的颜色,你可以参考以下写法:
import matplotlib.pyplot as plt from matplotlib.colors import ListedColormap # 假设你已有自定义颜色映射字典 colors = {"分类A": "#ff0000", "分类B": "#00ff00", ...} # 生成匹配分类顺序的自定义色卡 category_list = gdf["col"].unique() custom_cmap = ListedColormap([colors[cat] for cat in category_list]) fig, ax = plt.subplots(1, figsize=(宽度, 高度)) gdf.plot( column="col", # 指定用来做颜色编码的列 cmap=custom_cmap, # 传入自定义配色 categorical=True, # 声明该列为分类变量,使用离散颜色映射 legend=True, # 可选,是否显示图例 ax=ax ) plt.show()
2. 连续数值变量颜色映射
如果你要配色的列是连续数值类型,不需要额外处理,直接指定列名和cmap即可:
fig, ax = plt.subplots(1, figsize=(宽度, 高度)) gdf.plot( column="数值列名", cmap="viridis", # 可替换为任意matplotlib支持的色卡名称或自定义色卡 legend=True, ax=ax ) plt.show()
注意:
plt.subplots和gdf.plot的figsize参数顺序都是(宽度, 高度),如果你的参数写反了会导致画布比例不符合预期。
内容的提问来源于stack exchange,提问作者Olli
相关产品推荐
相关产品推荐

