плохо знакомы с 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')