#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’)
при этом будут сохранены тики по умолчанию, создаваемые графиком, но вы можете изменить детали.