(送福利)BDP绘制微博转发动态热力图
先把效果图放上来,酷炫压场。看完本文,你就能轻松实现这个动态效果,全程只需几分钟!
一、前言
现在,(贾赦、假射)假设你手头有一堆数据,你很想把数据绘制到地图上,再按时间动态展示?你会怎么办?有什么思路?有什么软件、网站可以用得上?
当你想绘制酷炫的动态图,遥想着分享到朋友圈后,美滋滋地装个逼,赢得评论里一片尖叫声和小姐姐们崇拜的emoji,并顺带收割一波赞时,是不是只能拍桌子,被想象中高难度的操作吓到,于是叹气道:“装逼不是你想装,想装就能装”,然后在excel里画了个圈圈。
如果这时候我告诉你,其实,不用编程,没有复杂操作,简单上传你的数据文件,拖曳几下,几分钟就能实现上面的动态热力图,一切就是那么简单、干脆、暴力,你会不会大惊从早到晚失色,惊呼这绝对不可能。
当然,你要是说你连数据都没有,就想实现可视化图,那......我只能说:“旁友,你很有想法嘛!跟我学做菜吧,学怎么在没有米的情况煮出一锅饭的那种。”
当然考虑到大家可能手头一时没有适合的数据集,或者有数据但没有地址,或者有地址但没有对应的经纬度,或者经纬度也有了但没有时间,难以实现动态效果,或者压根没数据也不会爬虫爬数据,但看到我开头的那张GIF后,就是心里痒痒,想马上上手搞个动态图出来。
为避免大家用类似红楼梦里的话,类似骂某类小片导演:“死促狭导演,一定浪上人的火来,他又不播了”的话来骂我,我会给出部分数据,供大家装逼之用,哦不,是供大家学习之用!
凑个吉利,分享数据6666条,格式如图:city-居住地;lng-经度;lat-纬度;time1-包含日期和时间(后续不用可不用管time2);Source和Target分别为转发的起点和终点(原本是对应的微博用户名,已替换成数字),因为在地图上显示时不包含传播路线,所以只要看作每个点是以Target区分的就行,相当于特定的ID;最后两列是每个用户的被转发数和粉丝数,用不用的上看情况。
福利一:微博转发数据分享-1
链接:http://pan.baidu.com/s/1jIh3K9K密码: sd25
当然如果你还是嫌不够,还是欲求不满,==,就想要全部数据(开头的图用了36000+条数据)。也许你打个赏、关注下,然后留下评论,我一高兴就会发你的哦。
另外正好说下数据处理过程,此数据和《Gephi绘制微博转发图谱:以“@老婆孩子在天堂”为例》是同一数据,但是去掉了居住地为:“海外”、“其他”等部分,然后统计后发现只需获取500条数据的经纬度(原始数据不含经纬度),虽然工作量减少了很多,但是500条经纬度其实也不少,你可以在:百度地图坐标拾取系统里一条条手动查询、复制粘贴。但显然会花费不少时间,如果数据量更大,更不方便。
而从地址得到经纬度,这是每个想进行地图可视化的人都必须面对的问题,所以这里再贴一个福利:
福利二:批量获取经纬度数据
“上面输入纬度,经度或地址地名关键词,每行一条,每次最大120条”
在“导入任务”上方的表框里粘贴上120条居住地数据,然后点击“导入任务”,便会开始自动查询,完成后,重复几次操作:复制粘贴120条。待全部数据获取完毕,点击“导出txt”,点击链接,复制到txt或csv,excel就可以了,当然有了这些数据,还需要写个小程序按照原始的3.6w+的居住地填充入对应的经纬度,此处先不展开,无非就是python读取写入csv。(所有这些都不需要你重新操作了,处理后的数据直接分享给你了,欢喜不)
二、BDP绘制动态热力图
前面废话了那么多,大家估计都看烦了,其实是因为绘制过程真的太简单,要不然完全没内容可以写了,到底多简单,立马开始。计时开始,看看你最后用了几分钟实现了这么酷炫的、可以发朋友圈装逼的动图可视化图。
2.1 网上搜索:BDP个人版,注册账号
海致BDP在线数据图表制作工具,免费使用,无需下载,无需编程,拖拽即可快速生成、制作数据图表,简单易上手。
2.2 上传数据
点击“数据源”,点击“立即添加”,点击“CSV上传”,按照跳出的页面,上传本地对应的CSV文件,“逗号”分割,确定后,等待上传成功后,并能看到数据,此处将“time1”列,设定为日期,否则后面动态展示时可能会出错。
点击下一步,改不改文件名,目录,随意,之后下一步,完成数据上传:
2.3 新建图表
点击菜单栏右上角“新建图表”,选择“经纬度地图”,确定
经度选择上传的CSV数据里的“lng”列,纬度选择“lat”列,坐标系选择为百度地图,补充以前上文获取经纬度数据也是基于百度地图的,而非高德、谷歌、腾讯地图,不同坐标体系经纬度数据不同,可能发生地图上点的偏差。需要特别注意和区分,具体可百度,在此先不说明:
2.4 绘制热力图
右上角,将工作表中文件拖曳到图层里,就能在地图上加载出数据,非常简单,有没有!地图的移动、放大都和平时用百度地图的操作是一样。不过这里会发现,将整个地图移动到视图中间时,下方的数据会无法显示,将地图上移后,又会出现,不知道什么原因,待解决:
接着在图表右边将图表标题改为:“微博转发热力图”;“图表类型”选择第二个,即热力图。之后就是随意DIY了。改下热力半径,以可视化效果而定;选择“时间动画”;“时间粒度”:可按照小时,日,分钟,秒等来展示;其他的“时间间隔”,“播放速度”都是可以自己设置的,这里就随大家自己玩了:之后点击进度条上的播放就能完成动态热力图了,具体效果可参看文章开头,也留给大家自己上手实现了。
三、小结
本项目的数据算是现成的,但是在处理成最后动态可视化所需的格式过程中也是没那么容易,尤其是需要另外获取经纬度数据,但一步步下来,其实也没那么难。
而可视化部分,市面上很多可以在上传数据后,直接拖曳生成漂亮图表的平台或软件,比如本文用到的BDP,比如付费的Tableau,还有其他未了解的网站,可以非常方便的进行可视化,还需要继续挖掘更多的用途,进一步学习下。
截止目前,已用百度的Echarts绘制了《爬取张佳玮138w+知乎关注者:数据可视化》中几乎全部的图表;
继续用Echarts中的heatmap(日历热图)展现了六年来老树画画发布微博的情况,并用PIL库进行多图拼接:《老树微博,三千诗与画》;
用Gephi一则热门微博的14层转发网络图谱:《Gephi绘制微博转发图谱:以“@老婆孩子在天堂”为例》。