Задача: Как построить точечный график с различными плотностями на вершине базовой карты?
Данные: У меня широта и долгота разных городовв Индии наряду с их уровнями загрязнения разных лет.
Подход: Первоначально я присвоил структуру данных переменной 'df'.Назначены широты для «у» и долготы для «х».Поскольку широта и долгота также содержат переменные 'y' и 'x', в ней я использовал 'df [' x ']. Values', чтобы получить только числовые значения.Принимая во внимание геометрическое положение Индии, я составил карту.Следующий набор - взять эти широты и долготы в ту же переменную, что и карта.Это было крайне важно, без чего я не мог наблюдать разброс сюжет.Взяв цвет в качестве третьей переменной, я построил график рассеяния, и уровни загрязнения имеют различную плотность.
![Map of India containing the pollution levels at different cities of the year 2013](https://i.stack.imgur.com/MneXf.png)
КОД:
import pandas as pd
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
# make up some data for scatter plot
df = pd.read_csv('dust.csv')
x = df[['y']].values
y = df[['x']].values
fig = plt.gcf()
fig.set_size_inches(8, 6.5)
m = Basemap(projection='mill',
llcrnrlat = 6.5,#llcrncrlat=lower left corner latitude
llcrnrlon = 66,
urcrnrlat = 36,
urcrnrlon = 98,
resolution = 'l')
#m.bluemarble(scale=0.2) # full scale will be overkill
m.drawcoastlines(linewidth=1)# add coastlines
m.drawcountries(linewidth=1)
# transform coordinates
#plt.subplot(221)
x,y=m(x,y)
plt.scatter(x, y,s=df.iloc[1:,2], alpha = 0.5, cmap='viridis')
plt.colorbar()
plt.show()