новичок в Python и кодировании в целом, поэтому, пожалуйста, простите любые очевидные ошибки. У меня возникли проблемы с нанесением данных о городском населении (количество людей, живущих в городских районах на страну в тысячах) на картографическую карту. Данные о населении находятся в файле CSV, индексированном по стране, широте, долготе и году - с 1950 по 2050 годы. Я использовал def, чтобы написать функцию, чтобы я мог ввести год и получить график населения в эти годы по странам. Я хочу, чтобы маркеры были пропорциональны по размеру населению каждой из стран. Однако кажется, что размер нанесенного маркера пропорционален положению страны в списке, так что страны в верхней части списка (который расположен в алфавитном порядке) имеют меньший маркер, например, в Бразилии есть небольшой участок маркера с большим городским численность населения. Любая помощь будет принята с благодарностью. Вот код:
import pandas as pd
from matplotlib.animation import FuncAnimation
import cartopy.crs as ccrs
import cartopy.feature as cfeature
country_urban_pop = pd.read_csv('/Users/myusername/Desktop/urbanisation_data.csv')
def urban_pop_plot(year):
lat, lon = country_urban_pop['latitude'], country_urban_pop['longitude']
population = country_urban_pop[year]
fig = plt.figure(figsize=(20, 16))
ax = plt.axes(projection=ccrs.PlateCarree())
ax.add_feature(cfeature.LAND)
ax.add_feature(cfeature.OCEAN)
ax.add_feature(cfeature.COASTLINE)
ax.add_feature(cfeature.BORDERS, linestyle=':')
ax.add_feature(cfeature.LAKES, alpha=0.5)
ax.add_feature(cfeature.RIVERS)
ax.coastlines()
ax.set_global()
ax.gridlines()
ax.stock_img()
plt.scatter(lon, lat, transform=ccrs.PlateCarree(), \
label=None, c=population, cmap='Oranges', linewidth=0, alpha=0.5)
plt.axis(aspect='equal')
plt.xlabel('longitude')
plt.ylabel('latitude')
plt.colorbar(label='population')
plt.clim(0, 10)
urban_pop_plot('1950')