Как изменить размер шрифта цветовой полосы графика GeoPandas choropleth

#python #matplotlib #geospatial #geopandas

#python #matplotlib #геопространственный #geopandas

Вопрос:

Когда я пытаюсь использовать аргумент legend_kwds для изменения размера шрифта моей цветовой панели, я продолжаю получать эту ошибку

Ошибка типа: init() получил неожиданный аргумент ключевого слова ‘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.

Ответ №1:

Вы можете использовать обходной путь 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()
  

Выходной график:

Африка

Комментарии:

1. Большое спасибо за вашу помощь — жаль, что в аргументе «legend_kwds = {‘fontsize’:20}» должна быть ошибка, которая делает это немного дополнительной работой.

2. @JackSimpson Это стандартная процедура с matplotlib. Функция Geopandas plot — это грубая функция-оболочка, которая далека от совершенства.

Ответ №2:

Я столкнулся с той же проблемой и обнаружил, что ответ работает некорректно — метки в легенде на самом деле неправильные.

Таким образом, используя ту же идею, вы можете вызвать

cax.tick_params(labelsize=’20’)

при этом будут сохранены тики по умолчанию, создаваемые графиком, но вы можете изменить детали.