Сьогодні, з допомогою R, покажемо географічне положення послідовників та тих, за ким слідкую я, в twitter.
Для цього використаємо пакети twitteR (для отримання даних), dismo та XML для отримання географічних координат місцезнаходження та maps і geosphere для побудови карти.
Отримуємо список послідовників та тих, за ким я слідую:
Отримуємо список послідовників та тих, за ким я слідую:
tmp <- getUser("fire_fox")
followers <- tmp$getFollowers(n = NULL)
following = tmp$getFriends(n = NULL)
Знаходимо координати місцезнаходження кожного користувача з отриманих списків. Для кожного місця отримуємо широту та довготу(де це можливо). Для отримання широти/довготи використана функція geocode()
, яка є обгорткою веб-сервісу геокодінгу Google:
userlocation <- geocode(tmp$location)
userLL <- userlocation[ , c("lon", "lat")]
followersLocation <- sapply(followers,function(x){location(x)})
followersLocation <- as.data.frame(do.call(rbind, followersLocation))
gcodesfollowers <- geocode(followersLocation$V1)
gcodesfollowers <- gcodesfollowers[!is.na(gcodesfollowers$lon), ]
unigcodesfollowers <- unique.data.frame(gcodesfollowers)
unigcodesfollowers <- unigcodesfollowers[, c("lon", "lat")]
followingLocation = sapply(following,function(x){location(x)})
followingLocation <- as.data.frame(do.call(rbind, followingLocation))
gcodesfollowing <- geocode(followingLocation$V1)
gcodesfollowing <- gcodesfollowing[!is.na(gcodesfollowing$lon), ]
unigcodesfollowing <- unique.data.frame(gcodesfollowing)
unigcodesfollowing <- unigcodesfollowing[, c("lon", "lat")]
Зображаємо на карті послідовників та тих, за ким слідую я:
par(mfrow=c(2,1),mar=rep(0,4))
map("world", col="#191919", fill=TRUE, bg="#000000", mar=rep(0,4))
mtext("@fire_fox Followers Map",col="white")
for (i in 1:nFollowers){
inter <- gcIntermediate(userLL, c(unigcodesfollowers$lon[i], unigcodesfollowers$lat[i]), n=100, addStartEnd=TRUE)
lines(inter, col = "white", lwd = 0.8)
}
map("world", col="#191919", fill=TRUE, bg="#000000", mar=rep(0,4))
mtext("@fire_fox Following Map",col="white")
for (i in 1:nFollowing){
inter <- gcIntermediate(userLL, c(unigcodesfollowing$lon[i], unigcodesfollowing$lat[i]), n=100, addStartEnd=TRUE)
lines(inter, col = "white", lwd = 0.8)
}
mtext("created by @fire_fox",col="white", side = 1)
Ось і результат, де з'єднувальні лінії - найкоротші відстані між мною та користувачем. :
Ще один із способів описаний у статті http://simplystatistics.tumblr.com/post/14568185310/an-r-function-to-map-your-twitter-followers. Але, при використанні описаної в статті функції, відкидаються користувачі, у яких в полі "location" дані введені кирилицею. У випадку мого екаунта це близько половини фолловерів. Тому вибір зроблено на користь пакета dismo, де є можливість використати геокодінг Google.
Немає коментарів:
Дописати коментар