您的位置:首頁>正文

Python+百度API 畫出美美噠熱力地圖(代碼+資料)

之前在寫葡萄酒資料分析那篇文章時

曾想過做一個葡萄酒分佈的地區熱力圖

當時也沒有搞定

在寫完那篇文章之後

閑來無事

在網上查閱了很多技術博客

結合自己的摸索實踐

摸索了一下午

終於完成了

當時真的很開心

資料準備

在國家統計局網站copy到2015年各城市的房地產開發投資額數據:

把資料保存在本地, 存成csv格式

百度API免費申請

打開網址:http://lbsyun.baidu.com/

註冊好, 按照下圖操作:

點擊 功能與服務----地圖

點擊創建應用:

然後自己取個名字, 選擇流覽器端, 白名單輸入星號:

點擊提交

你就有了一個應用了

城市轉換為經緯度

我們打開百度地圖的開放平臺

http://developer.baidu.com/map/jsdemo.htm#c1_15

在左側找到添加熱力圖-----點擊運行-----點擊顯示熱力圖-----就能看到熱力圖啦~

這是百度API所能提供的熱力圖類型

我們注意到所給的這段代碼:

我們將您的金鑰換成剛才我們申請得到的那串數字

也就是:

然後在本地新建一個.html檔(可以通過創建文字檔, 然後將尾碼改為.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

同類文章
Next Article
喜欢就按个赞吧!!!
点击关闭提示