自学采用 R 的 twitteR 和 leaflet 包, 你就能把任何人热门话题的贴文功能定位画在世界地图上。 -- Dorris Scott
责任编辑导航系统-建立插件 …… 09%
-搜集twitter统计数据 …… 23%
-生成世界地图 …… 50%
-归纳 …… 81%
校对自: https://opensource.com/article/17/6/collecting-and-mapping-twitter-data-using-r译者: Dorris Scott
翻译者: XYenChi
自学采用 R 的 twitteR 和 leaflet 包, 你就能把任何人热门话题的贴文功能定位画在世界地图上。
当我已经开始自学 R ,我也须要自学怎样出于科学研究的出发地搜集twitter统计数据并对其展开态射。虽然网路上有关那个热门话题的重要信息许多,但我察觉到无法认知甚么与搜集并态射twitter统计数据有关。我不但是个 R 新手,所以对各式各样讲义中控制技术术语不熟识。但虽然举步维艰,我获得成功了!在那个讲义里,我将以一类新手开发人员都看不懂的形式来全攻略怎样搜集twitter统计数据并将至展现出在世界地图中。
建立插件
假如你没twitter账号,具体来说你须要 注册登记三个[1]。接着,到 apps.twitter.com[2] 建立三个容许你搜集twitter统计数据的插件。别担心,建立插件极为单纯。你建立的插件会与twitter插件接口(API)相连。 想像 API 是三个多用途电子零件对个人副手。你能采用 API 让其他流程帮你行事。如此一来,你能网络连接twitter API 令其搜集统计数据。只需保证千万别允诺太多,即使twitter统计数据允诺单次是有管制[3] 的。
搜集贴文有三个需用的 API 。你若要做纸制的贴文搜集,所以采用 REST API. 若是想在某一天数内稳步搜集,能用 streaming API。讲义中我主要就采用 REST API。
建立插件之后,前往 Keys and Access Tokens 标签。你须要 Consumer Key (API key)、 Consumer Secret (API secret)、 Access Token 和 Access Token Secret 才能在 R 中访问你的插件。
搜集推特统计数据
下一步是打开 R 准备写代码。对于新手,我推荐采用 RStudio[4],这是 R 的集成开发环境 (IDE) 。我发现 RStudio 在解决问题和测试代码时很实用。 R 有访问该 REST API 的包叫 twitteR[5]。
打开 RStudio 并新建 RScript。做好这些之后,你须要安装和加载 twitteR 包:
install.packages("twitteR")#安装 TwitteR
library (twitteR)
#载入 TwitteR
安装并载入 twitteR 包之后,你得输出上文提及的插件的 API 重要信息:
api_key <- ""#在引号内放入你的 API key
api_secret <- ""
#在引号内放入你的 API secret token
token <- ""
#在引号内放入你的 token
token_secret <- ""
#在引号内放入你的 token secret
接下来,连接twitter访问 API:
setup_twitter_oauth(api_key, api_secret, token, token_secret)我们来试试让twitter搜索有关社区花园和农夫市场:
tweets <- searchTwitter("community garden OR #communitygarden OR farmers market OR #farmersmarket", n = 200, lang = "en")那个代码意思是搜索前 200 篇 (n = 200) 英文 (lang = "en") 的贴文, 包括关键词 community garden 或 farmers market 或任何人提及这些关键词的热门话题标签。
twitter搜索完成之后,在统计数据框中保存你的结果:
tweets.df <-twListToDF(tweets)为了用贴文建立世界地图,你需要搜集的导出为 .csv 文件:
write.csv(tweets.df, "C:\Users\YourName\Documents\ApptoMap\tweets.csv")#an example of a file extension of the folder in which you want to save the .csv file.
运行前保证 R 代码已保存接着继续展开下一步。.
聚合地图
现在你有了能展示在世界地图上的统计数据。在此讲义中,我们将用三个 R 包 Leaflet[6] 做三个基本的插件,这是三个聚合交互式世界地图的热门 JavaScript 库。 Leaflet 采用 magrittr[7] 管道运算符 (%>%), 即使其语法自然,易于写代码。刚接触可能有点奇怪,但它确实降低了写代码的工作量。
为了清晰起见,在 RStudio 打开三个新的 R 脚本安装这些包:
install.packages("leaflet")install.packages("maps")
library(leaflet)
library(maps)
现在须要三个路径让 Leaflet 访问你的统计数据:
read.csv("C:\Users\YourName\Documents\ApptoMap\tweets.csv", stringsAsFactors = FALSE)stringAsFactors = FALSE 意思是保留重要信息,不将它转化成 factors。 (想了解 factors,读这篇文章"stringsAsFactors: An unauthorized biography"[8], 译者 Roger Peng)
是时候制作你的 Leaflet 世界地图了。我们将采用 OpenStreetMap基本世界地图来做你的世界地图:
m <- leaflet(mymap) %>% addTiles()我们在基本世界地图上加个圈。对于 lng 和 lat,输出包含贴文的经纬度的列名,并在前面加个~。 ~longitude 和 ~latitude 指向你的 .csv 文件中与列名:
m %>% addCircles(lng = ~longitude, lat = ~latitude, popup = mymap$type, weight = 8, radius = 40, color = "#fb3004", stroke = TRUE, fillOpacity = 0.8)运行你的代码。会弹出网页浏览器并展示你的世界地图。这是我前面搜集的贴文的世界地图:
贴文功能定位世界地图
带功能定位的贴文世界地图,采用了 Leaflet 和 OpenStreetMap CC-BY-SA[9]
虽然你可能会对世界地图上的图文数量如此之小感到惊奇,通常只有 1% 的贴文记录了地理编码。我搜集了总数为 366 的贴文,但只有 10(大概总贴文的 3%)是记录了地理编码的。假如你为得到记录了地理编码的贴文而困扰,改变搜索关键词看看能不能得到更好的结果。
归纳
对于新手,把以上所有碎片结合起来,从twitter统计数据聚合三个 Leaflet 世界地图可能很艰难。 那个讲义基于我完成那个任务的经验,我希望它能让你的自学过程变得更轻松。
(题图:琼斯·贝克[10]. CC BY-SA 4.0[11]. 来源: Cloud[12], Globe[13]. Both CC0[14].)
译者简介:
Dorris Scott - Dorris Scott 是佐治亚大学的地理学博士生。她的科学研究重心是地理重要信息系统(GIS)、 地理统计数据科学、可视化和公共卫生。她的论文是在三个 GIS 系统接口将退伍军人福利医院的传统和非传统统计数据结合起来,帮助病人为他们的健康状况作出更为明朗的决定。
via: https://opensource.com/article/17/6/collecting-and-mapping-twitter-data-using-r
译者:Dorris Scott[15] 翻译者:XYenChi 校对:wxy
责任编辑由 LCTT 原创校对,Linux中国 荣誉推出
[1]: 注册登记三个 -
https://twitter.com/signup[2]: apps.twitter.com - https://apps.twitter.com/
[3]: 管制 -
https://dev.twitter.com/rest/public/rate-limiting[4]: RStudio - https://www.rstudio.com/
[5]: twitteR - https://cran.r-project.org/web/packages/twitteR/twitteR.pdf
[6]: Leaflet - https://rstudio.github.io/leaflet
[7]: magrittr - https://github.com/smbache/magrittr
[8]: "stringsAsFactors: An unauthorized biography" - http://simplystatistics.org/2015/07/24/stringsasfactors-an-unauthorized-biography/
[9]: CC-BY-SA - https://creativecommons.org/licenses/by-sa/2.0/
[10]: 琼斯·贝克 -
https://opensource.com/users/jason-baker[11]: CC BY-SA 4.0 - https://creativecommons.org/licenses/by-sa/4.0/
[12]: Cloud - https://pixabay.com/en/clouds-sky-cloud-dark-clouds-1473311/
[13]: Globe - https://pixabay.com/en/globe-planet-earth-world-1015311/
[14]: CC0 - https://creativecommons.org/publicdomain/zero/1.0/
[15]: Dorris Scott - https://opensource.com/users/dorrisscott