怎么建设手机网站,一般建设网站大概需要多少钱,国外个人网站域名注册,广告软文小故事800字在上一篇文章《用Python画一个中国地图》中#xff0c;我们简单描述了一下如何用Python快速画出一个中国地图的轮廓#xff0c;似乎没有什么实用价值#xff0c;这一次我们用实际数据填充它#xff0c;使它看上去更有意义。上色延续上一次的代码#xff0c;我们这次还是只… 在上一篇文章《用Python画一个中国地图》中我们简单描述了一下如何用Python快速画出一个中国地图的轮廓似乎没有什么实用价值这一次我们用实际数据填充它使它看上去更有意义。上色延续上一次的代码我们这次还是只增加5行代码from matplotlib.patches import Polygonax plt.gca()for nshape, seg in enumerate(m.states): poly Polygon(seg, facecolorr) ax.add_patch(poly)在展示结果之前稍微解释一下。第2行plt.gca函数名看上去很诡异是因为Python里大量使用了缩写这个gca就是Get Current Axes的缩写实际上就是要获得当前图形的座标轴。然后我们开始一个循环把图形文件中各个省的多边形取出来给它一个颜色在这里我们统一放上红色也就是Red的缩写r然后把这个多边形放在我们图形的座标轴上然后就得到了下图糟糕怎么能少了台湾呢在此郑重声明台湾是中华人民共和国不可分割的领土加入台湾的Shape文件然后循环一下m.readshapefile(TWN_adm_shp/TWN_adm0, taiwan, drawboundsTrue)for nshape, seg in enumerate(m.taiwan): poly Polygon(seg, facecolorr) ax.add_patch(poly)好了这下祖国山河一片红看上去正确多了。接下来你还可以把各个省的名字打出来看一下具体代码就不解释了for shapedict in m.states_info: statename shapedict[NL_NAME_1] p statename.split(|) if len(p) 1: s p[1] else: s p[0] print(s)for shapedict in m.taiwan_info: s shapedict[NAME_CHINE] print(s)结果如下安徽
北京
重庆
福建
福建
福建
...数据接下来我们去国家统计局搞点数据(http://www.stats.gov.cn/tjsj/pcsj/rkpc/6rp/indexce.htm)第六次全国人口普查数据可以直接下载Excel文件略作修改导出成csv文件用我们上一课讲的方法一句话读取进来df pd.read_csv(chnpop.csv)直接输出大概是下面这个样子渲染好了数据也有了我们终于要开始做一些激动人心的事情了。我们希望根据各省人口的多少用深浅不同的颜色为各个省份染色那么首先第一步我们需要选择一个调色板也就是色彩映射表colormap为此matplotlib为你准备了数不胜数的选择我们随便选择一款国旗色红黄色调的吧cmap plt.cm.YlOrRd然后我们把每个省的数据映射到colormap上colors[s] cmap(np.sqrt((pop - vmin) / (vmax - vmin)))[:3]最后我们把各个省的颜色描在地图上color rgb2hex(colors[statenames[nshape]])
poly Polygon(seg, facecolorcolor, edgecolorcolor)哒哒我们的全国人口数量热力图就完成了可以看到河南、四川、广东、山东几个省的颜色比较深说明这几个省的人口总数最多而西藏颜色最浅代表这里的人口总数最少。这里只是简单地举了一个例子你还可以把各省的人口总数除以面积得到人口密度数据你还可以把各省的经济总量画在图上总之有了这个入门的方法一切就都简单了呢。最后附上完整的代码供大家参考。import matplotlib.pyplot as pltfrom mpl_toolkits.basemap import Basemapfrom matplotlib.patches import Polygonfrom matplotlib.colors import rgb2hexplt.figure(figsize(16,8))m Basemap( llcrnrlon77, llcrnrlat14, urcrnrlon140, urcrnrlat51, projectionlcc, lat_133, lat_245, lon_0100)m.drawcountries(linewidth1.5)m.drawcoastlines()m.readshapefile(CHN_adm_shp/CHN_adm1, states, drawboundsTrue)df pd.read_csv(chnpop.csv)df[省名] df.地区.str[:2]df.set_index(省名, inplaceTrue)statenames[]colors{}cmap plt.cm.YlOrRdvmax 100000000vmin 3000000for shapedict in m.states_info: statename shapedict[NL_NAME_1] p statename.split(|) if len(p) 1: s p[1] else: s p[0] s s[:2] if s 黑龍: s 黑龙 statenames.append(s) pop df[人口数][s] colors[s] cmap(np.sqrt((pop - vmin) / (vmax - vmin)))[:3]ax plt.gca()for nshape, seg in enumerate(m.states): color rgb2hex(colors[statenames[nshape]]) poly Polygon(seg, facecolorcolor, edgecolorcolor) ax.add_patch(poly)plt.show()完来源https://segmentfault.com/a/1190000010900212文章版权归原作者所有转载仅供学习使用不用于任何商业用途如有侵权请留言联系删除感谢合作。