我已经被困了几个小时完成一项任务。
我有一个excel文件,所有城市都有300000多个居民+坐标。我必须在全球地图上绘制它们。为此,我有以下代码:
from IPython import get_ipython
get_ipython().magic('reset -sf')
get_ipython().magic('matplotlib')
from mpl_toolkits.basemap import Basemap
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from pandas import Series, DataFrame
plt.close('all')
#%%
dirname=('C:\\Users\\Guido\\Documents\\Geologie\\Programmeren\\Scripts van mij\\Deftig\\')
filename='WUP2014-F12-Cities_Over_300K.xls'
xlsfile = pd.ExcelFile(dirname + filename)
drframe = xlsfile.parse("DATA", skiprows = 16)
urbpop = DataFrame(drframe)
lat = urbpop["Latitude"]
lon = urbpop["Longitude"]
m = Basemap(projection='robin',lon_0=0,resolution='c')
m.drawcoastlines()
m.drawcountries()
lons,lats = m(list(lon), list(lat))
m.scatter(lons, lats, s = 1.3, color ='blue')
The excel-file looks like this
The output figure looks like this
现在我必须在每个大陆上给出另一种颜色的点数(例如南美橙色,欧洲蓝色......)。
此外,我必须用居民数量标记每个点。
有什么想法吗?
答案 0 :(得分:0)
您应该以某种方式将excel文件的大陆信息作为不同的列提供,或者您可以创建自己的文件,例如json格式的continent.dat或其他。
{ 'south-america': ['Argentina', ,'Brazil', ...],
'north-america': ['Canada', 'United States', ...],
...
}
使用此信息,您可以重新组合人口数据框数据。完成后,您可以通过指定不同的颜色来跟踪每个大洲的流程。
如果要将大陆信息添加到Excel文件中,Pandas groupby可能是一个很好的方法。