首页 > 解决方案 > 如何更改 GeoPandas 等值线图颜色条的字体大小

问题描述

当我尝试使用 legend_kwds 参数更改颜色条的字体大小时,我不断收到此错误

TypeError: init () got an unexpected keyword argument 'fontsize'

ax = df.plot(figsize=(20,16), alpha=0.8, column='value', legend=True, cmap='OrRd', legend_kwds={'fontsize':20})
    
plt.show()

有谁知道如何使用 GeoPandas 增加颜色条的字体大小?我似乎找不到有效的关键字。我正在使用 GeoPandas 0.8.1 和 Matplotlib 3.3.1。

标签: pythonmatplotlibgeospatialgeopandas

解决方案


您可以使用 matplotlib 解决方法,而不是在单个语句 geopandas 的 plot 函数中传递所有复杂的参数。

import numpy as np
import geopandas as gpd
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import make_axes_locatable

# for demo purposes, use the builtin data
world = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres'))
africa = world[world.continent=='Africa']
maxv, minv = max(africa.pop_est), min(africa.pop_est)

fig, ax = plt.subplots(figsize=(7,6))
divider = make_axes_locatable(ax)

# create `cax` for the colorbar
cax = divider.append_axes("right", size="5%", pad=0.1)

# plot the geodataframe specifying the axes `ax` and `cax` 
africa.plot(column="pop_est", cmap='magma', legend=True, \
            vmin=minv, vmax=maxv, ax=ax, cax=cax)

# manipulate the colorbar `cax`
cax.set_ylabel('pop_est', rotation=90)
# set `fontsize` on the colorbar `cax`
cax.set_yticklabels(np.linspace(minv, maxv, 10, dtype=np.dtype(np.uint64)), {'fontsize': 8})

plt.show()

输出图:

非洲


推荐阅读