You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何为Geopandas数据框导入的Shapefile添加Matplotlib颜色条?

为Geopandas分级地图添加颜色条(图例)

看起来你已经用Geopandas画出了基于分位数分级的降水率地图,现在就差加个颜色条来标注每个颜色对应的数值范围对吧?其实很简单,只需要在plot()函数里做几个小调整,或者配合matplotlib的工具就能搞定,我给你两种适配你场景的方法:

方法一:直接在Geopandas plot中生成分级图例(适配你的quantiles scheme)

因为你用了scheme='quantiles'做分级渲染,Geopandas本身支持直接生成对应分级的图例,只需要在plot()里加上legend=True,再通过legend_kwds调整图例的位置和样式,避免遮挡地图:

fig, ax = plt.subplots(1, figsize=(15, 15))
# 把plot的返回值存下来,方便后续调整
map_plot = polydat.plot(
    ax=ax,
    column='pptrate',
    cmap='OrRd',
    scheme='quantiles',
    legend=True,  # 开启分级图例
    legend_kwds={
        'title': '降水率',  # 给图例加标题
        'loc': 'upper left',  # 图例初始位置
        'bbox_to_anchor': (1, 1),  # 把图例移到地图右侧外部
        'fontsize': 10  # 调整图例文字大小
    }
)
ax.set_ylim([-90, 90])
ax.set_axis_off()
plt.axis('equal');

这样生成的图例会严格对应你设置的分位数分级,每个颜色块旁边都会标注对应的数值范围,非常直观。

方法二:手动添加连续颜色条(如果需要展示连续数值变化)

如果你不想用分级渲染,想要用连续的颜色条来展示pptrate的数值变化,可以去掉scheme参数,然后用matplotlib的colorbar()函数手动添加:

fig, ax = plt.subplots(1, figsize=(15, 15))
# 绘制连续颜色的地图
map_plot = polydat.plot(
    ax=ax,
    column='pptrate',
    cmap='OrRd',
    vmin=polydat['pptrate'].min(),  # 设置颜色最小值
    vmax=polydat['pptrate'].max()   # 设置颜色最大值
)
ax.set_ylim([-90, 90])
ax.set_axis_off()
plt.axis('equal')

# 添加颜色条并设置样式
color_bar = plt.colorbar(map_plot, ax=ax, pad=0.02)
color_bar.set_label('降水率', fontsize=12)  # 给颜色条加标签
color_bar.ax.tick_params(labelsize=10)  # 调整刻度文字大小

这种方式适合展示数值的连续变化,颜色条会从最小值到最大值平滑过渡,能更细致地体现降水率的差异。

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

火山引擎 最新活动