Matplotlib绘制地图无清晰边界、数据不连续该如何调整代码?
问题修复方案
你遇到的两个问题分别对应绘图参数设置和数据匹配两方面的调整,可按以下步骤修改代码:
1. 补充清晰的州边界
geopandas的plot方法默认不显示矢量边界,添加边界相关参数即可:
edgecolor:指定边界的颜色,常用'white'或'black'区分不同行政区域linewidth:指定边界的粗细,一般设置为0.3-0.8即可兼顾清晰度和美观度
2. 统一颜色映射逻辑,保证数据连续展示
两份数据绘图效果不一致的核心原因是颜色映射的数值范围没有对齐,可通过固定参数解决:
- 新增
vmin、vmax参数,手动指定颜色映射对应的数值上下限,建议设置为两份num_fires字段的共同最小、最大值,保证同一数值在两张图中对应同一种颜色 - 如果数据存在缺失值,新增
missing_kwds参数指定缺失值的显示样式,避免缺失值打断连续色阶 - 不要额外设置
scheme参数,保持默认的连续色阶映射模式即可
修改后可运行的参考代码
import matplotlib.pyplot as plt import geopandas as gpd # 若之前未导入geopandas需补全该行 f, ax = plt.subplots(1, figsize=(12,6)) # 这里的vmin和vmax请替换为你两份数据num_fires的共同最小、最大值 ax = states_00_14.plot( column='num_fires', cmap='OrRd', legend=True, ax=ax, edgecolor='white', # 白色州边界 linewidth=0.5, # 边界粗细 vmin=0, # 可替换为你的数据实际最小值 vmax=states_00_14['num_fires'].max(), # 可固定为第一张图的最大值保证两张图效果对齐 missing_kwds={'color': 'lightgrey', 'edgecolor': 'white', 'label': '缺失值'} # 缺失值统一显示样式 ) lims = plt.axis('equal') f.suptitle('US Wildfire count per state in 2000-2014') ax.set_axis_off() plt.show()
额外排查方向
如果修改后效果还是不符合预期,可先运行print(states_00_14['num_fires'].describe())查看当前数据的分布:
- 确认是否存在异常极大值拉偏了整个色阶范围
- 确认
num_fires字段是否为数值类型,没有混入字符串类的无效值 - 确认两份数据的州矢量边界是否一致,没有存在边界细碎、缺失的问题
内容的提问来源于stack exchange,提问作者Kylee
相关产品推荐
相关产品推荐

