GeoPandas绘图太丑?Matplotlib咋调?
GeoPandas绘图太丑?别急,Matplotlib调色盘给你“美颜滤镜”
你是不是也遇到过这种情况:辛辛苦苦用GeoPandas加载了行政区划数据,调用plot()一键出图,结果出来的地图灰扑扑、配色像90年代网页,连自己都不想多看第二眼?别慌——这不是你的数据有问题,而是默认样式在偷懒。今天我就手把手教你,用Matplotlib给GeoPandas地图“整容”,从土味村姑秒变高级杂志封面。

为什么GeoPandas默认图这么“素”?
GeoPandas底层依赖Matplotlib绘图,但为了“通用性”,它默认采用最保守的灰色系+单一线条。这就像你去照相馆拍证件照,摄影师不会主动给你加柔光、换背景——不是他不会,是他默认“安全模式”。我在参与某省国土空间规划项目时,第一次用GeoPandas画耕地分布图,领导看了一眼说:“这图放汇报PPT里,怕是要被当成实习生做的。”
记住:GeoPandas负责“画出来”,Matplotlib负责“画得美”。两者是“骨架”和“皮肤”的关系。
三步走:从“能看”到“耐看”的实战改造
我们以中国省级行政区为例,演示如何一步步美化。假设你已加载好数据china_gdf(含geometry列):
import geopandas as gpd
import matplotlib.pyplot as plt
# 读取数据(示例路径)
china_gdf = gpd.read_file('path/to/china_provinces.geojson')
第一步:告别灰白,上色!—— cmap参数是灵魂
默认灰色是因为没指定颜色映射(colormap)。Matplotlib内置几十种科学配色方案,比如'viridis'(渐变紫绿)、'plasma'(科幻感橙紫)、'Set3'(柔和马卡龙)。试试这个:
fig, ax = plt.subplots(1, 1, figsize=(12, 8))
china_gdf.plot(column='area', cmap='viridis', legend=True, ax=ax)
plt.title('中国各省面积分布图', fontsize=16)
plt.show()
这里column='area'表示按面积大小上色,cmap='viridis'指定配色方案。瞬间是不是高级感拉满?
第二步:边界描边——让省份“轮廓分明”
默认边界线太细或颜色太淡,导致省份糊成一团。解决方案:用edgecolor和linewidth强化边界:
china_gdf.plot(
column='area',
cmap='viridis',
edgecolor='white', # 白色描边
linewidth=0.5, # 线宽0.5
legend=True,
ax=ax
)
白色描边在深色底图上尤其提神,就像给每块拼图加了金边框。
第三步:字体、图例、背景——细节决定成败
专业地图的魔鬼在细节。中文字体乱码?图例太小?背景太刺眼?一并解决:
# 设置中文字体(避免方框)
plt.rcParams['font.sans-serif'] = ['SimHei'] # Windows用黑体
plt.rcParams['axes.unicode_minus'] = False # 解决负号显示问题
# 调整图例位置和字体
china_gdf.plot(
column='area',
cmap='viridis',
edgecolor='white',
linewidth=0.5,
legend=True,
legend_kwds={'label': "面积 (平方公里)", 'orientation': "horizontal"},
ax=ax
)
# 设置背景色和标题
ax.set_facecolor('#f0f0f0') # 浅灰背景
ax.set_title('中国各省面积分布图', fontsize=18, fontweight='bold')
ax.axis('off') # 隐藏坐标轴
plt.tight_layout() # 自动调整边距
plt.show()
进阶技巧:自定义配色与多图布局
如果内置cmap不满足你?可以自定义颜色列表。比如按经济带分色:
# 假设有'经济带'列:东部/中部/西部
region_colors = {
'东部': '#ff6b6b',
'中部': '#4ecdc4',
'西部': '#45b7d1'
}
china_gdf['color'] = china_gdf['经济带'].map(region_colors)
china_gdf.plot(color=china_gdf['color'], edgecolor='black', linewidth=0.3, ax=ax)
想画子图对比不同指标?用subplot网格布局:
fig, axes = plt.subplots(1, 2, figsize=(15, 6))
china_gdf.plot(column='GDP', cmap='Reds', ax=axes[0], title='GDP分布')
china_gdf.plot(column='人口', cmap='Blues', ax=axes[1], title='人口分布')
plt.tight_layout()
plt.show()
总结:丑图不是终点,而是调参的起点
GeoPandas + Matplotlib 的组合,本质是“数据驱动绘图引擎”。默认图丑,恰恰给了你无限定制空间。记住三个核心参数:cmap(配色)、edgecolor/linewidth(描边)、legend_kwds(图例)。再配合字体、背景、布局微调,你也能做出期刊级专题地图。
Dr.Gis 小贴士:别在配色上花超过10分钟。推荐先用'viridis'或'plasma'这类科学友好的cmap,它们对色盲友好且层次分明,比你自己瞎配更专业。
你在调图时踩过哪些坑?或者有什么私藏的配色方案?欢迎在评论区晒图交流!下期我们讲《如何用Contextily给GeoPandas地图加卫星底图》——让你的地图从“学术报告”秒变“谷歌地球”。
-
地理信息系统软件太贵?这5款开源工具免费好用(附:安装包) 2026-04-13 08:30:02
-
地理信息系统专业代码是多少?新版学科目录解读(含:对照表) 2026-04-13 08:30:02
-
地理信息系统原理太难懂?汤国安教程第二版全解析(附:PDF) 2026-04-13 08:30:02
-
地理信息系统和遥感怎么分?三张图看懂核心区别(含:应用案例) 2026-04-13 08:30:02
-
地理信息系统原理太难懂?图解核心逻辑与架构(附:思维导图) 2026-04-13 08:30:02
-
地理信息系统的英文缩写是什么?入门必看指南(含:学习图谱) 2026-04-13 08:30:01
-
地理信息系统怎么选?最新专业大学排名深度解读(附:学科评估) 2026-04-13 08:30:01
-
GeoPandas库安装报错?GIS环境配置(附:离线包) 2026-04-12 08:30:02
-
GeoPandas安装难?GIS环境配置全攻略(附:懒人包) 2026-04-12 08:30:02
-
地理信息系统入门难吗?零基础高效学习路线(附:视频教程) 2026-04-12 08:30:02
-
GeoPandas绘图太丑?GIS可视化教程(含:配色表) 2026-04-12 08:30:02
-
地理信息系统专业怎么选?五大高薪就业方向盘点(含:薪资表) 2026-04-12 08:30:02
-
地理信息系统能干什么?十大应用场景全解析(含:学习路线) 2026-04-12 08:30:02
-
GeoPandas如何筛选点?空间查询实战(附:源码) 2026-04-12 08:30:01
-
GeoPandas是什么?GIS空间分析实战指南(含:数据) 2026-04-12 08:30:01
-
ArcGIS处理数据太慢?GeoPandas高效分析实战(附:完整源码) 2026-04-12 08:30:01
-
还在用ArcGIS?GeoPandas官方文档实操详解(附:完整代码) 2026-04-12 08:30:01
-
SHP数据清洗太耗时?GeoPandas批量处理实战(附:完整脚本) 2026-04-11 08:30:02
-
GeoPandas怎么读?GIS空间分析实战(附:源码) 2026-04-11 08:30:02
-
GIS开发工程师招聘简章怎么写?大厂JD全攻略(附:通用模板) 2026-04-11 08:30:01