使用动画可以使得图形更形象,更能反映数据的变化

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语言-动画的更多相关文章

  1. 数据分析和R语言的那点事儿_1

    最近遇到一些程序员同学向我了解R语言,有些更是想转行做数据分析,故开始学习R或者Python之类的语言.在有其他编程语言的背景下,学习R的语法的确是一件十分简单的事.霸特,如果以为仅仅是这样的话那就图 ...

  2. Rmarkdown用法与R语言动态报告

    Rmarkdown用法与R语言动态报告数据分析用R语言非常便捷,因为R语言的社区强大,并且在不断更新和完善,提供了各种分析利器.Knitr和Rmarkdown包则是数据分析中的动态报告利器. 下面是一 ...

  3. R语言-Knitr包的详细使用说明

    R语言-Knitr包的详细使用说明 by 扬眉剑 来自数盟[总舵] 群:321311420 1.相关资料 1:自动化报告-谢益辉 https://github.com/yihui/r-ninja/bl ...

  4. R语言 ggplot2包

    R语言  ggplot2包的学习   分析数据要做的第一件事情,就是观察它.对于每个变量,哪些值是最常见的?值域是大是小?是否有异常观测? ggplot2图形之基本语法: ggplot2的核心理念是将 ...

  5. R语言缺点

    R的优点:免费,开源,体积小.缺点:对大文本处理差,另外一个也在于开源,package如果出错,烦死你.当你跑比较大的simulation,对效率有要求的时候,有时还是不得不用C,这可能是10小时和1 ...

  6. r语言与dataframe

    什么是DataFrame 引用 r-tutor上的定义: DataFrame 是一个表格或者类似二维数组的结构,它的各行表示一个实例,各列表示一个变量. 没错,DataFrame就是类似于Excel表 ...

  7. R语言作为BI中ETL的工具

    R语言作为BI中ETL的工具,增删改 R语言提供了强大的R_package与各种数据库进行数据交互. 外加其强大数据变换清洗函数,为ETL提供一条方便快捷的道路. RODBC ROracal RMys ...

  8. R语言环境安装与基本使用

    R语言安装包可以从这个地址选择合适的URL去下载:https://cran.r-project.org/mirrors.html,这里使用这个https://mirrors.tuna.tsinghua ...

  9. R语言绘制空间热力图

    先上图 R语言的REmap包拥有非常强大的空间热力图以及空间迁移图功能,里面内置了国内外诸多城市坐标数据,使用起来方便快捷. 开始 首先安装相关包 install_packages("dev ...

随机推荐

  1. HttpURLConnection用法

    在SDK中的URLConnection链接Servlet的问题 1.URL的请求分类GET和POST GET请求可以获取页面静态的值,参数放URL后,传给Serverlct POST的参数是存放于ht ...

  2. Exchanger

    Exchanger可以在两个线程之间交换数据,只能是2个线程,不支持更多的线程之间互换数据. 当线程A调用Exchange对象的exchange()方法后,他会进入阻塞状态,直到线程B也调用了exch ...

  3. HDU [P2819] swap

    二分图行列匹配+输出路径 经典题,当且仅当一行匹配一列的时候,符合题意. 本题的难点在于如何输出路径,我们发现这个移动的过程就是将所有匹配选择排序,在选择排序时输出路径即可 #include < ...

  4. POJ 3182 The Grove [DP(spfa) 射线法]

    题意: 给一个地图,给定起点和一块连续图形,走一圈围住这个图形求最小步数 本来是要做课件上一道$CF$题,先做一个简化版 只要保证图形有一个点在走出的多边形内就可以了 $hzc:$动态化静态的思想,假 ...

  5. Spring Mybatis-分页插件使用

    Mybatis分页切入点 Mybatis内部有个plugins(插件)概念,本质上属于拦截器的思想.具体的解析可见外文MyBatis拦截器原理探究.本文将在此基础上直接展示实现代码和其他的相关解析 分 ...

  6. 调试 smallcorgi/Faster-RCNN_TF 的demo过程遇到的问题

    最近在调试faster R-CNN时,遇到了各种各样的问题.使用的算法库为https://github.com/smallcorgi/Faster-RCNN_TF 注:本文使用的是通过virtuale ...

  7. shell 脚本中执行SQL语句 -e "..."

    /usr/local/mysql/bin/mysql -uroot -p123456 -e " use faygo source faygo.sql select * from devqui ...

  8. mysql 在一个实例运行情况下再搭建一个实例

    配置mysql服务 详细步骤,请参考(http://study.lishiming.net/chapter17.html#mysql), 阿铭只把简单步骤写一下. 根据阿铭提供的地址,假如你已经搭建好 ...

  9. mysql sql_cache缓存使用

    有如下规则,如果数据表被更改,那么和这个数据表相关的全部Cache全部都会无效,并删除之.这里"数据表更改"包括: INSERT, UPDATE, DELETE, TRUNCATE ...

  10. C/C++语言简介之语言组成

    一.数据类型 C的数据类型包括:整型.字符型.实型或浮点型(单精度和双精度).枚举类型.数组类型.结构体类型.共用体类型.指针类型和空类型. 二.常量与变量 常量其值不可改变,符号常量名通常用大写. ...