【Python]】地图热力图如何绘制?(含源代码) |
您所在的位置:网站首页 › 电脑上怎么查看网页源代码 › 【Python]】地图热力图如何绘制?(含源代码) |
文章目录
一、问题引入 & 使用地图的说明1.1 问题的引入1.2 使用地图的说明
二、方法1三、方法2
一、问题引入 & 使用地图的说明
1.1 问题的引入
我们有一个中国各省份的数据集,要求绘制地图热力图,该怎么实现呢? 部分数据集如下: 最后两列表示经纬度。 1.2 使用地图的说明特别提醒:文中尽量不用世界、全国地图,能用表格表达的尽量用表格表达! 如果一定要用,凡涉国界图件(国内部分地区、全国、世界部分地区、全球)必须使用国家测绘局地理信息局标准地图底图,所用底图边界要完全无修改(包括南海诸岛位置),为适应排版时图的缩放,比例尺一律用线划比例尺,而不用数字比例尺。 并在图题下注明“注:该图基于国家测绘地理信息局标准地图服务网站下载的审图号为GS(2016)xxxx 号的标准地图制作,底图无修改。”。 编辑部的核心要求是:使用国家测绘局地理信息局标准地图底图,所用底图边界要完全无修改。并未要求提供审图号,因此我们无需提交审图,只需按这条要求提供地图即可。 我认为,要想满足这个要求,需要做到以下几点: (1)shapefile地图为官方提供。这样可以保证地图边界无误,坐标系无误。 (2)使用EPS格式的标准地图作为底图。EPS格式标准地图中的各项要素均可编辑,可以删除不需要的文字图层,可以改变色块填充的颜色、样式,同时可以保证出图清晰。 (3)将shapefile地图调整为投影坐标系,导出为EPS格式,叠加在不改变行政边界的标准地图上。 【能不用尽量不要用!】 二、方法1 # 创建Basemap对象 map = Basemap(llcrnrlon=75, llcrnrlat=15, urcrnrlon=135, urcrnrlat=55, projection='lcc', lat_1=33, lat_2=45, lon_0=105, resolution='l') # 绘制海岸线、边界和国家 map.drawcoastlines() map.drawcountries() map.drawstates() # 填充地图背景颜色 map.fillcontinents(color='lightgray', lake_color='white') # 绘制经纬线 map.drawparallels(range(-90, 91, 10), labels=[1, 0, 0, 0], fontsize=10, linewidth=0.5, color='gray') map.drawmeridians(range(0, 360, 10), labels=[0, 0, 0, 1], fontsize=10, linewidth=0.5, color='gray') # 将经纬度转换为Basemap坐标 x, y = map(data['long'].values, data['lat'].values) map.scatter(x, y, c=data['value'], cmap='hot_r', s=100, alpha=0.8) # 添加颜色条 plt.colorbar(label='Value') plt.title('Heatmap of Values in China') plt.show()这段代码使用了Basemap库来创建一个地图对象,并在地图上绘制了中国地区的热力图。 首先,创建了一个Basemap对象,指定了地图的经纬度范围(llcrnrlon, llcrnrlat, urcrnrlon, urcrnrlat),投影方式(projection)为兰勃特投影(‘lcc’),中心经纬度(lon_0)为105,以及分辨率(resolution)为低分辨率(‘l’)。 接下来,使用Basemap对象的方法绘制了海岸线、边界和国家的轮廓,使用了drawcoastlines()、drawcountries()和drawstates()方法。 然后,使用fillcontinents()方法填充地图的陆地颜色为灰色,水域颜色为白色。 接着,使用drawparallels()和drawmeridians()方法绘制经纬线,设置了经纬线的范围、标签位置、字体大小、线宽和颜色。 之后,将经纬度坐标转换为Basemap坐标,使用scatter()方法在地图上绘制散点图,其中x和y分别表示经纬度坐标转换后的Basemap坐标,c表示散点的颜色,s表示散点的大小,alpha表示散点的透明度。 最后,使用colorbar()方法添加颜色条,指定了颜色条的标签(label),并使用title()方法设置地图的标题。最后使用show()方法显示地图。 展示的结果为:
这段代码使用了pyecharts库来创建一个中国地图,并将数据中的城市和产业值添加到地图上。 首先,创建了两个空列表lst1和lst2,用于存储数据中的城市名称和产业值。 然后,通过循环遍历数据中的每一行,将城市名称和产业值分别添加到lst1和lst2中。其中,data.iloc[i, 1]表示数据中第i行的第2列(城市名称),data.iloc[i, 2]表示数据中第i行的第3列(产业值)。 接下来,导入所需的库和模块,并创建一个Map对象c。在Map对象的初始化参数中,设置了地图的宽度和高度为"1600px"和"800px"。 然后,使用add()方法将数据添加到地图中。其中,通过列表解析生成了城市和产业值的二维列表,[list(z) for z in zip(lst1, lst2)]表示将lst1和lst2中对应位置的元素打包成元组,并转换为列表。"china"表示地图的区域范围为中国。 接着,使用set_global_opts()方法设置全局配置项。title_opts用于设置地图的标题,visualmap_opts用于设置视觉映射选项。在visualmap_opts中,max_指定了视觉映射的最大值,is_piecewise=True表示视觉映射为分段模式,pieces列表用于设置分段的取值范围、标签和颜色。 最后,使用render()方法将地图渲染为HTML文件,并指定文件名为"产业.html"。 执行以上代码后,将生成一个名为"产业.html"的HTML文件,其中包含了中国地图以及对应城市的产业值颜色映射。
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |