R语言-动画
使用动画可以使得图形更形象,更能反映数据的变化
1.安装环境gganimate
if(!require(devtools)) install.packages("devtools")
devtools::install_github("dgrtwo/gganimate")
#需要注意的是这个包依赖于ImageMagick来产生动画,所以还需要安装ImageMagick
install.packages("installr")
installr::install.ImageMagick("http://www.imagemagick.org/script/download.php")
#在安装该软件的过程中,有一个页面全部打钩,否则动画无法找到可执行文件
2.加载包
library(readr)
library(dplyr)
library(DT)
library(maps)
library(ggplot2)
library(ggthemes)
library(tibble)
library(lubridate)
library(tidyr)
library(gganimate)
3.加载数据集
url_csv <- 'https://raw.githubusercontent.com/d4tagirl/R-Ladies-growth-maps/master/rladies.csv'
rladies <- read_csv(url(url_csv))%>%
select(-1)
datatable(rladies, rownames = FALSE,
options = list(pageLength = 5))

结论:该数据集是Rladies数据集,是一个全球女权组织的社区,主要改变性别歧视
主要字段:screen_name 社区名称
location 地点
created_at 创建时间
follower 追随人数
age_days 到目前的时间(2017-05-16)
lon 社区的经度
lat 社区的纬度
4.静态图形
# 加载世界地图
world <- ggplot() +
borders('world',color='gray85',fill='gray80')+
theme_map() # 将每个社区作为点加载到地图上
map <- world +
geom_point(aes(x=lon,y=lat,size=followers),data=rladies,colour='purple',alpha=.5)+
scale_size_continuous(range=c(1,8),breaks=c(250,500,750,1000))+
labs(size='Followers')

结论:可以看出美国和欧洲的女权社区很多
5.创建动态图形(展示每一个月的变化)
#使用tibble创建开始日期和起始点的数据,tribble是data.frame的替代
ghost_points_ini <- tibble(
created_at = as.Date('2011-09-11'),
followers=0,lon=0,lat=0
) # 使用tibble创建结束日期和终止点的数据
ghost_points_fin <- tibble(
created_at=seq(as.Date('2017-05-16'),
as.Date('2017-05-30'),
by='days'),
followers=0,lon=0,lat=0
)
# gganimate 需要指定frame作为参数,
# cumulative 为T表示
map <- world +
geom_point(aes(x=lon,y=lat,size=followers,
frame=created_at,cumulative=T),
data=rladies,color='purple',alpha=.5)+
geom_point(aes(x=lon,y=lat,size=followers,
frame=created_at,cumulative=T),
data=ghost_points_ini,color='purple',alpha=0)+
geom_point(aes(x=lon,y=lat,size=followers,
frame=created_at,cumulativte=T),
data=ghost_points_fin,color='purple',alpha=0)+
scale_size_continuous(range=c(1,8),breaks=c(250,500,750,1000))+
labs(size='Followers')
#开启动画
gganimate(map)



结论:可以知道女权社区起源于美国,慢慢向欧洲扩散,最后覆盖到拉丁美洲,此图还有修改的空间,圆点随着社区成立的时间而增大
6.修改动态图形
# 选择月份中展示的日期展示(1,10,20)
dates <- as_tibble(seq(floor_date(as.Date(min(rladies$created_at)),
unit = 'month'),
as.Date('2017-05-15'),
by='days')) %>%
filter(day(value) %in% c(1,10,20)) # 创建新的数据集,只选择screen_name和date,同时根据时间计算用户的比例
rladies_frames <- rladies %>%
select(screen_name) %>%
expand(screen_name,date=dates$value) %>%
right_join(rladies,by='screen_name') %>%
filter(date > created_at) %>%
mutate(age_total=as.numeric(age_days,units='days'),
age_at_date= as.numeric(difftime(date,created_at,units = 'days'),
units = 'days'),
est_followers=((followers-1)/age_total)*age_at_date) ghost_points_ini2 <- ghost_points_ini %>%
mutate(date=created_at,est_followers = 0) ghost_points_fin2 <- ghost_points_fin %>%
expand(date=created_at,rladies) %>%
select(date,est_followers=followers,lon,lat) map_frames <- world +
geom_point(aes(x=lon,y=lat,size=est_followers,frame=date),
data=rladies_frames,colour='purple',alpha=.5)+
geom_point(aes(x=lon,y=lat,size=est_followers,frame=date),
data = ghost_points_ini2,alpha=0)+
geom_point(aes(x=lon,y=lat,size=est_followers,frame=date),
data = ghost_points_fin2,colour='purple',alpha=.5)+
scale_size_continuous(range=c(1,8),breaks=c(250,500,750,1000))+
labs(size='Followers') gganimate(map_frames)



结论:可以看出全球女权社区不断地壮大的过程
2012~2016年女权社区处于起步的状态,集中在美国,
2016~2017年开始向欧洲发展,2017年欧洲的女权社区的规模超过美国
2017年之后女权社区王拉丁美洲开始逐步的发展
R语言-动画的更多相关文章
- 数据分析和R语言的那点事儿_1
最近遇到一些程序员同学向我了解R语言,有些更是想转行做数据分析,故开始学习R或者Python之类的语言.在有其他编程语言的背景下,学习R的语法的确是一件十分简单的事.霸特,如果以为仅仅是这样的话那就图 ...
- Rmarkdown用法与R语言动态报告
Rmarkdown用法与R语言动态报告数据分析用R语言非常便捷,因为R语言的社区强大,并且在不断更新和完善,提供了各种分析利器.Knitr和Rmarkdown包则是数据分析中的动态报告利器. 下面是一 ...
- R语言-Knitr包的详细使用说明
R语言-Knitr包的详细使用说明 by 扬眉剑 来自数盟[总舵] 群:321311420 1.相关资料 1:自动化报告-谢益辉 https://github.com/yihui/r-ninja/bl ...
- R语言 ggplot2包
R语言 ggplot2包的学习 分析数据要做的第一件事情,就是观察它.对于每个变量,哪些值是最常见的?值域是大是小?是否有异常观测? ggplot2图形之基本语法: ggplot2的核心理念是将 ...
- R语言缺点
R的优点:免费,开源,体积小.缺点:对大文本处理差,另外一个也在于开源,package如果出错,烦死你.当你跑比较大的simulation,对效率有要求的时候,有时还是不得不用C,这可能是10小时和1 ...
- r语言与dataframe
什么是DataFrame 引用 r-tutor上的定义: DataFrame 是一个表格或者类似二维数组的结构,它的各行表示一个实例,各列表示一个变量. 没错,DataFrame就是类似于Excel表 ...
- R语言作为BI中ETL的工具
R语言作为BI中ETL的工具,增删改 R语言提供了强大的R_package与各种数据库进行数据交互. 外加其强大数据变换清洗函数,为ETL提供一条方便快捷的道路. RODBC ROracal RMys ...
- R语言环境安装与基本使用
R语言安装包可以从这个地址选择合适的URL去下载:https://cran.r-project.org/mirrors.html,这里使用这个https://mirrors.tuna.tsinghua ...
- R语言绘制空间热力图
先上图 R语言的REmap包拥有非常强大的空间热力图以及空间迁移图功能,里面内置了国内外诸多城市坐标数据,使用起来方便快捷. 开始 首先安装相关包 install_packages("dev ...
随机推荐
- Go笔记-指针
Go 语言的取地址符是 &,放到一个变量前使用就会返回相应变量的内存地址 一个指针变量可以指向任何一个值的内存地址 它指向那个值的内存地址,在 32 位机器上占用 4 个字节,在 64 位机器 ...
- 不要用for循环去遍历LinkedList
ArrayList与LinkedList的普通for循环遍历 对于大部分Java程序员朋友们来说,可能平时使用得最多的List就是ArrayList,对于ArrayList的遍历,一般用如下写法: p ...
- ehcache memcache redis 三大缓存男高音[转]
原文链接:http://blog.csdn.net/jationxiaozi/article/details/8509732 最近项目组有用到这三个缓存,去各自的官方看了下,觉得还真的各有千秋!今天特 ...
- ant基础[转]
原文链接:http://www.cnblogs.com/wufengxyz/archive/2011/11/24/2261797.html 1,什么是antant是构建工具2,什么是构建概念到处可查到 ...
- [Miller-Rabin & Pollard-rho]【学习笔记】
Miller-Rabin & Pollard-rho 很久之前就学过了...今天重学一遍 利用费马小定理,但不能判断伪素数的情况 基于a的伪素数n: \(a^{n-1} \equiv 1 \p ...
- 一步一步从原理跟我学邮件收取及发送 12.telnet命令行收一封信pop3
本系列上一篇文章中我们就说到了,这一次我们要说 pop3 收信了.虽然我觉得应该先说完 mime 格式,不过估计大家已经不耐烦了 -- 怎么老在说发送啊?我们要看收取! 好吧,来啦,来啦!收取邮 ...
- ECMAScript 6 笔记(二)
ES6中的基本扩展 一.字符串的扩展 1. 字符的Unicode表示法 用两个双字节的形式表达字符时,如果直接在\u后面跟上超过0xFFFF的数值(比如\u20BB7),JavaScript会理解成\ ...
- Oracle-11g 中使用表空间透明数据加密(TDE)
Oracle-11g 中使用表空间透明数据加密(TDE)的限制 TDE 表空间加密方式会在数据读写过程中加解密数据.与在 SQL 层面做加解密的 TDE 列加密方式相比,其限制要大幅减少.例如:数据类 ...
- memcached 与 redis 的区别和具体应用场景
1. Memcached简介 Memcached是以LiveJurnal旗下Danga Interactive公司的Bard Fitzpatric为首开发的高性能分布式内存缓存服务器.其本质上就是一个 ...
- pycharm的用法
Ctrl / 注释(取消注释)选择的行 Shift + Enter开始新行Ctrl + Enter智能换行TAB Shift+TAB缩进/取消缩进所选择的行Ctrl + Alt + I自动缩进行Ctr ...