NMT Data Mining & Big Data

用python代码实现热力地图(百度地图以及行政区块)

2019-05-05
NMt

用python代码实现画热力地图,一种是基于百度地图,点状的热力图(经纬度坐标),另一种是统计行政区域内的频数,实现块状的热力图。

@@@@

基于百度地图的热力图

import pandas as pd
import os
import numpy as np
#import seaborn as sns
import folium
import webbrowser
from folium.plugins import HeatMap

os.chdir(r'E:\Desktop_file\ZJ\POI')

data0 = './data0/'

data = pd.read_csv(data0+'data1.csv')
data = data[0:365]
data_dm1 = data.iloc[:, [4, 3]]
data_dm1['n'] = 1
data_dm2 = np.array(data_dm1)
data_dm3 = data_dm2.tolist()

map_osm = folium.Map(location=[30.594488,114.315898,],zoom_start=10)    #绘制Map,开始缩放程度是5倍
HeatMap(data_dm3).add_to(map_osm)  # 将热力图添加到前面建立的map里

file_path = r"E:\Desktop_file\ZJ\POI\map.html"
map_osm.save(file_path)     # 保存为html文件

webbrowser.open(file_path)

这是一个看起来很高大上的地图,输入数据是经纬度。如果数据不是经纬度的话,可以利用百度API进行查找进行转换。

图1

基于pyecharts的行政区域热力图

from pyecharts import Map

val = [100, 150, 134, 200, 89, 43, 176, 123, 56, 144, 186, 63, 155]

quxian = ['江岸区', '江汉区', '硚口区', '汉阳区', '武昌区', '洪山区', '东西湖区', '蔡甸区', '江夏区', '黄陂区', '新洲区', '汉南区', '青山区']
map3 = Map("武汉地图",'武汉市', width=1200, height=600)
map3.add("武汉市", quxian, val, visual_range=[1, max(val)], maptype=u'武汉', is_visualmap=True,
    visual_text_color='#000', name_map = True, is_map_symbol_show = False, is_label_show = True)
map3.render(path="./wuhanxxx.html")

下面是图的样子:
图2

这里详细介绍一下pyecharts模块中的add函数中的参数:

  1. 第一个参数是名字。在本代码中是”武汉市”。
  2. 第二个参数是本地图中的各个行政区域。
  3. 第三个参数是各个地区对应的数值。
  4. visual_range=[1, max(val)] 这个参数是左下角尺标的范围。
  5. maptype=u'武汉' 这个参数是表示你需要画的地图的名称。如果要画中国地图,这里就填maptype='china'
  6. is_visualmap=True 如果填False地图上就没有颜色了。
  7. visual_text_color='#000' 文本的颜色。
  8. name_map = True 是否显示地图的名称。
  9. is_map_symbol_show = False 填True的画,每个有数据的行政区中会有一个红点。
  10. is_label_show = True 默认为False,填True的画会显示行政区的名字。

以上参数了解清楚之后就能够很好的选择自己想要的地图了。说实话我觉得这个图长得还可以,但是被diss掉了。
暂时没有找到合适的画热力地图的办法,但是据说可以在R上面试试,R的可拓展性应该会更好,等我找到更好的办法就更新的博客,敬请期待~

参考文献:
https://blog.csdn.net/u012535605/article/details/79194697
http://www.pianshen.com/article/475838162/

转载请注明:南梦婷的博客 » 点击阅读原文


Comments

Content