0

我已经被困在一个任务上几个小时了。

我有一个包含 300000+ 居民 + 坐标的所有城市的 excel 文件。我必须在全球地图上绘制它们。为此,我有以下代码:

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')

excel文件看起来像这样

输出图如下所示

现在我必须给每个大陆上的点另一种颜色(例如南美洲橙色,欧洲蓝色......)。

我还必须用它的居民数量来标记每个点。

有任何想法吗?

4

1 回答 1

0

您应该以某种方式将大陆信息作为不同的列提供给 excel 文件,或者您可以创建自己的文件,例如 json 格式的continent.dat 或其他文件。

{ 'south-america': ['Argentina', ,'Brazil', ...],
  'north-america': ['Canada', 'United States', ...],
  ... 
}

有了这些信息,您可以重新组合您的人口数据框数据。完成此操作后,您可以通过分配不同的颜色来跟踪每个大陆的流程。

如果您想将大陆信息添加到 excel 文件中,Pandas groupby 可能是一个不错的方法。

http://pandas.pydata.org/pandas-docs/stable/groupby.html

于 2016-04-09T21:25:09.593 回答