微博热力图的实现
拿到手上的数据是这样的:
原始数据:
我只能说我最讨厌min的数据了,为了节省空间,让程序员自己格式化,手动白眼,还好sublime自带Pretty JSON可视化工具,配置过程->
然后就变成了漂亮的格式数据:
完成pretty Json处理后的数据:
我们可以发现每个时间点的经纬度坐标都已经给出,然后我们就可以利用百度地图API实现热力图的绘制
有趣的是百度API有些直接提供了APIKEY直达->
根据热力图API示例,我们可以发现,其主要可以更改的数据在于
//可以更改points的值来实现自己数据的更新,count表示权重
var points =[
{"lng":116.418261,"lat":39.921984,"count":50},
{"lng":116.423332,"lat":39.916532,"count":51},
{"lng":116.419787,"lat":39.930658,"count":15}];
heatmapOverlay = new BMapLib.HeatmapOverlay({"radius":20});
heatmapOverlay.setDataSet({data:points,max:100});//将数据和热力图点绑定
map.addOverlay(heatmapOverlay);//画热力图
倘若你的数据保存在json文件中,你又该如何将json文件导入js中呢?推荐使用d3的json函数。
d3.json("Weibo_locations_all.json",function(data){
var points = data;//成功从json文件中导入data
if(!isSupportCanvas()){
alert('热力图目前只支持有canvas支持的浏览器,您所使用的浏览器不能使用热力图功能~')
}
heatmapOverlay.setDataSet({data:points,max:100});
openHeatmap();
});
提示:调用d3函数读取json文件时程序会另外开辟一个分支,与主程序并行运算,所以倘若是对json文件中的数据进行操作,需要将该操作写在d3函数中而非主函数。
说到这里,不如来看看最终的成果以及我们的发现!
我们主要从地理位置,时间维度以及热词维度进行展示,成果戳这—>
This work is licensed under a CC A-S 4.0 International License.