一,简介:
最近想将微信好友的所在城市画在地图上,可以使用basemap,但搜索了很久,也没找到一个适合的案例,大家基本上讲得不明不白,很多人甚至只是转载别人的做法,或者颜色和散点的大小是通过data预先设计好的。
我需要根据分布比例的大小来计算散点的大小,并通过一组颜色管理方案随机分配颜色,现在我做出来了,分享给大家。
二,实现的思路:
1,绘制地图,引用中国和台湾地图,如果你是外国友人,好友主要分布在国外,也可以使用世界地图;
2,统计各个城市好友的数量,映射好友所在城市:城市经纬度坐标形成字典;
3,统计同一个城市好友的数量,映射成城市:数量形成字典;
4,使用range(len(城市的数量))和plt.cm.parameter生成系列颜色的映射并显示在图表上。
三,效果图(只是我的好友集中分布于一个城市,数据比例看起来不太协调)
四,代码。
def drawFriendCityMap():
posDict=getFriendArea()
plt.figure(figsize=(9.87,6.92))
m=Basemap(projection='aea',llcrnrlon=79,llcrnrlat=14,urcrnrlon=138,urcrnrlat=52,lat_0=25,lon_0=110)
m.readshapefile('.\gadm36_CHN_shp\gadm36_CHN_1','states',drawbounds=True)
m.readshapefile('.\gadm36_TWN_shp\gadm36_TWN_0','states',drawbounds=True)
m.shadedrelief()#etopo绘制地形图,shadedrelief是浮雕图,默认是空白轮廓图
fo=open('data.txt','r',encoding='utf-8-sig').