之前在寫葡萄酒資料分析那篇文章時
曾想過做一個葡萄酒分佈的地區熱力圖
當時也沒有搞定
在寫完那篇文章之後
閑來無事
在網上查閱了很多技術博客
結合自己的摸索實踐
摸索了一下午
終於完成了
當時真的很開心
資料準備在國家統計局網站copy到2015年各城市的房地產開發投資額數據:
把資料保存在本地, 存成csv格式
百度API免費申請
打開網址:http://lbsyun.baidu.com/
註冊好, 按照下圖操作:
點擊 功能與服務----地圖
點擊創建應用:
然後自己取個名字, 選擇流覽器端, 白名單輸入星號:
點擊提交
你就有了一個應用了
城市轉換為經緯度
我們打開百度地圖的開放平臺
http://developer.baidu.com/map/jsdemo.htm#c1_15
在左側找到添加熱力圖-----點擊運行-----點擊顯示熱力圖-----就能看到熱力圖啦~
這是百度API所能提供的熱力圖類型
我們注意到所給的這段代碼:
我們將您的金鑰換成剛才我們申請得到的那串數字
也就是:
然後在本地新建一個.html檔(可以通過創建文字檔, 然後將尾碼改為.html達到, 如果你的文字檔不顯示尾碼, 請百度解決~)
我們將加入了自己申請的金鑰的網頁代碼全部複製下,
複製的代碼中的示例熱力圖的位置不是我們想要的
我們想要的是我們的資料生成熱力圖
打開Python
import jsonfrom urllib.request import urlopen, quoteimport requests,csvimport pandas as pd #導入這些庫後邊都要用到def getlnglat(address): url = 'http://api.map.baidu.com/geocoder/v2/' output = 'json' ak = '替換成你申請的金鑰!!!' add = quote(address) #由於本文城市變數為中文, 為防止亂碼, 先用quote進行編碼 uri = url + '?' + 'address=' + add + '&output=' + output + '&ak=' + ak req = urlopen(uri) res = req.read().decode() #將其他編碼的字串解碼成unicode temp = json.loads(res) #對json資料進行解析 return tempfile = open(r'E:房地產開發投資額2015.json','w') #建立json資料檔案with open(r'E:房地產開發投資額2015.csv', 'r') as csvfile: #打開csv reader = csv.reader(csvfile) for line in reader: #讀取csv裡的資料 # 忽略第一行 if reader.line_num == 1: #由於第一行為變數名稱, 故忽略掉 continue # line是個list, 取得所有需要的值 b = line[0].strip() #將第一列city讀取出來並清除不需要字元 c = line[1].strip()#將第二列price讀取出來並清除不需要字元 lng = getlnglat(b)['result']['location']['lng'] #採用構造的函數來獲取經度 lat = getlnglat(b)['result']['location']['lat'] #獲取緯度 str_temp = '{"lat":' + str(lat) + ',"lng":' + str(lng) + ',"count":' + str(c) +'},' #print(str_temp) #也可以通過列印出來, 把資料copy到百度熱力地圖api的相應位置上 file.write(str_temp) #寫入文檔file.close() #保存參考文獻:https://www.jianshu.com/p/773ff5f08a2c
運行完成之後, 本地會出現一個json檔
打開可以看到:
是一長串json資料, 我們全選這些資料, 複製替換掉本地的html檔中的var經緯度部分
原本是這樣的:
替換完成後是這樣的:
(我是用notepad++以編輯的方式打開的本地html檔)
保存之後,以網頁流覽的方式打開本地的html
使用滑鼠滾輪放大縮小到可以看見全國視野,然後點擊左下角顯示熱力圖即可看到~
你出現的圖是這樣的:
因為原始資料預設為20和100,只要超過100的值顯示都一樣,而且沒有漸變輻射的效果
可以修改熱力點輻射半徑(輻射範圍大小)和最大值
我們資料的price最大是北京的4177,所以我設置為4000,保存
再次打開操作就能看到美美噠熱力圖啦~
你可以拿這個方法去做其他熱力圖啦~比如房價熱力圖,GDP熱力圖等等~
End.
運行人員:中國統計網小編
中國統計網,是國內最早的大資料學習網站
//www.itongji.cn
保存之後,以網頁流覽的方式打開本地的html
使用滑鼠滾輪放大縮小到可以看見全國視野,然後點擊左下角顯示熱力圖即可看到~
你出現的圖是這樣的:
因為原始資料預設為20和100,只要超過100的值顯示都一樣,而且沒有漸變輻射的效果
可以修改熱力點輻射半徑(輻射範圍大小)和最大值
我們資料的price最大是北京的4177,所以我設置為4000,保存
再次打開操作就能看到美美噠熱力圖啦~
你可以拿這個方法去做其他熱力圖啦~比如房價熱力圖,GDP熱力圖等等~
End.
運行人員:中國統計網小編
中國統計網,是國內最早的大資料學習網站
//www.itongji.cn