Я создаю несколько картограмм, используя картографию, и хотел бы добавить дополнительную функцию: метки с числовыми значениями, связанными с картограммой для каждой страны/региона.
Вот пример того, что я получаю.
И вот пример того, что я хотел бы иметь (метки со значениями для каждого региона) .
Я думаю, я мог бы вручную добавлять каждую метку одну за другой в нужные координаты, но я уверен, что есть более быстрый, более общий и более масштабируемый способ сделать это. Я потратил довольно много времени на исследования, но не нашел подходящего решения, поэтому любая помощь будет очень признательна.
Это функция, которую я использую для построения картограммы:
def choropleth(ax, countries, geo_dict, cmap_name):
"""
Plots a choropleth map of selected countries using the values in geo_dict
as a base for the colormap
ax: matplotlib axes on which the cloropleth is drawn
countries: a list of records extracted from a shp file representing the
regions to be mapped
geo_dict: a dictionary in which the keys are ISO alpha-2 country codes and
the values the relevant data for the choropleth
cmap_name: a string with the name of the colormap to be used
"""
# value normalization for the color map
values = [geo_dict[[c.attributes['ISO_A2']][0]] for c in countries]
norm = Normalize(vmin=min(values), vmax=max(values))
cmap = plt.cm.get_cmap(cmap_name) # add ',n' to limit choropleth categories
for c in countries:
v = geo_dict[c.attributes['ISO_A2']]
sp = ShapelyFeature(c.geometry, crs,
edgecolor='k',
linewidth=0.3,
zorder = 2,
facecolor=cmap(norm(v)))
ax.add_feature(sp)
sm = plt.cm.ScalarMappable(cmap=cmap,norm=norm)
sm._A = []
plt.colorbar(sm,ax=ax)
ax.add_feature()
используйтеax.annotate()
. Вам нужно будет получить центроидc.geometry
в качестве параметра аннотации. - person swatchai   schedule 02.01.2019