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

1.安装环境gganimate

  1. if(!require(devtools)) install.packages("devtools")
  2. devtools::install_github("dgrtwo/gganimate")
  3. #需要注意的是这个包依赖于ImageMagick来产生动画,所以还需要安装ImageMagick
  4. install.packages("installr")
  5. installr::install.ImageMagick("http://www.imagemagick.org/script/download.php")
  6. #在安装该软件的过程中,有一个页面全部打钩,否则动画无法找到可执行文件

2.加载包

  1. library(readr)
  2. library(dplyr)
  3. library(DT)
  4. library(maps)
  5. library(ggplot2)
  6. library(ggthemes)
  7. library(tibble)
  8. library(lubridate)
  9. library(tidyr)
  10. library(gganimate)

3.加载数据集

  1. url_csv <- 'https://raw.githubusercontent.com/d4tagirl/R-Ladies-growth-maps/master/rladies.csv'
  2. rladies <- read_csv(url(url_csv))%>%
  3. select(-1)
  4. datatable(rladies, rownames = FALSE,
  5. options = list(pageLength = 5))

  结论:该数据集是Rladies数据集,是一个全球女权组织的社区,主要改变性别歧视

  主要字段:screen_name 社区名称

       location 地点

created_at 创建时间

       follower 追随人数

       age_days 到目前的时间(2017-05-16)

lon 社区的经度

lat  社区的纬度

4.静态图形

  1. # 加载世界地图
  2. world <- ggplot() +
  3. borders('world',color='gray85',fill='gray80')+
  4. theme_map()
  5.  
  6. # 将每个社区作为点加载到地图上
  7. map <- world +
  8. geom_point(aes(x=lon,y=lat,size=followers),data=rladies,colour='purple',alpha=.5)+
  9. scale_size_continuous(range=c(1,8),breaks=c(250,500,750,1000))+
  10. labs(size='Followers')

  结论:可以看出美国和欧洲的女权社区很多

5.创建动态图形(展示每一个月的变化)

  1. #使用tibble创建开始日期和起始点的数据,tribble是data.frame的替代
  2. ghost_points_ini <- tibble(
  3. created_at = as.Date('2011-09-11'),
  4. followers=0,lon=0,lat=0
  5. )
  6.  
  7. # 使用tibble创建结束日期和终止点的数据
  8. ghost_points_fin <- tibble(
  9. created_at=seq(as.Date('2017-05-16'),
  10. as.Date('2017-05-30'),
  11. by='days'),
  12. followers=0,lon=0,lat=0
  13. )
  14. # gganimate 需要指定frame作为参数,
  15. # cumulative 为T表示
  16. map <- world +
  17. geom_point(aes(x=lon,y=lat,size=followers,
  18. frame=created_at,cumulative=T),
  19. data=rladies,color='purple',alpha=.5)+
  20. geom_point(aes(x=lon,y=lat,size=followers,
  21. frame=created_at,cumulative=T),
  22. data=ghost_points_ini,color='purple',alpha=0)+
  23. geom_point(aes(x=lon,y=lat,size=followers,
  24. frame=created_at,cumulativte=T),
  25. data=ghost_points_fin,color='purple',alpha=0)+
  26. scale_size_continuous(range=c(1,8),breaks=c(250,500,750,1000))+
  27. labs(size='Followers')
  28. #开启动画
  29. gganimate(map)

  结论:可以知道女权社区起源于美国,慢慢向欧洲扩散,最后覆盖到拉丁美洲,此图还有修改的空间,圆点随着社区成立的时间而增大

6.修改动态图形

  1. # 选择月份中展示的日期展示(1,10,20)
  2. dates <- as_tibble(seq(floor_date(as.Date(min(rladies$created_at)),
  3. unit = 'month'),
  4. as.Date('2017-05-15'),
  5. by='days')) %>%
  6. filter(day(value) %in% c(1,10,20))
  7.  
  8. # 创建新的数据集,只选择screen_name和date,同时根据时间计算用户的比例
  9. rladies_frames <- rladies %>%
  10. select(screen_name) %>%
  11. expand(screen_name,date=dates$value) %>%
  12. right_join(rladies,by='screen_name') %>%
  13. filter(date > created_at) %>%
  14. mutate(age_total=as.numeric(age_days,units='days'),
  15. age_at_date= as.numeric(difftime(date,created_at,units = 'days'),
  16. units = 'days'),
  17. est_followers=((followers-1)/age_total)*age_at_date)
  18.  
  19. ghost_points_ini2 <- ghost_points_ini %>%
  20. mutate(date=created_at,est_followers = 0)
  21.  
  22. ghost_points_fin2 <- ghost_points_fin %>%
  23. expand(date=created_at,rladies) %>%
  24. select(date,est_followers=followers,lon,lat)
  25.  
  26. map_frames <- world +
  27. geom_point(aes(x=lon,y=lat,size=est_followers,frame=date),
  28. data=rladies_frames,colour='purple',alpha=.5)+
  29. geom_point(aes(x=lon,y=lat,size=est_followers,frame=date),
  30. data = ghost_points_ini2,alpha=0)+
  31. geom_point(aes(x=lon,y=lat,size=est_followers,frame=date),
  32. data = ghost_points_fin2,colour='purple',alpha=.5)+
  33. scale_size_continuous(range=c(1,8),breaks=c(250,500,750,1000))+
  34. labs(size='Followers')
  35.  
  36. 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. IDEA tomcat启动异常 org.apache.catalina.startup.ContextConfig parseWebXml

    启动Tomcat发现有异常,总是无法启动,具体的异常日志为下图 具体的解决方法为:在tomcat的conf/content.xml中加上<Loader delegate="true&q ...

  2. SpringMVC源码情操陶冶-AbstractHandlerMethodMapping

    承接前文SpringMVC源码情操陶冶-AbstractHandlerMapping,本文将介绍如何注册HandlerMethod对象作为handler 类结构瞧一瞧 public abstract ...

  3. BZOJ 3110: [Zjoi2013]K大数查询 [整体二分]

    有N个位置,M个操作.操作有两种,每次操作如果是1 a b c的形式表示在第a个位置到第b个位置,每个位置加入一个数c如果是2 a b c形式,表示询问从第a个位置到第b个位置,第C大的数是多少. N ...

  4. .net下使用socket.io随笔记录

    一.问题背景 目前公司在互联网产品上需要程序与前端部分要进行一个实时交互,在进行一定程度上的选型后,决定使用socket.io框架进行一个实践,算是公司的一个新的 尝试,也算是给自己增加增长见闻,由于 ...

  5. install atom markdown preview plus error

    Installing "markdown-preview-enhanced@0.15.2" failed.Hide output- npm ERR! Darwin 17.2.0 n ...

  6. TJ4运行环境

    http://springwq2011.blog.51cto.com/4332889/966028 http://blog.csdn.net/u013573789/article/details/45 ...

  7. 广告中的AdNetwork、AdExchange、DSP、SSP、RTB和DMP是什么?

    [https://www.douban.com/note/557732418/?type=rec] AdNetwork.AdExchange.DSP.SSP.RTB.DMP这些模式之间存在着内在的关系 ...

  8. 对html语义化的理解

    所有人都知道html即超文本标记语言或超文本链接标示语言,是目前网络上应用最为广泛的语言,也是构成网页文档的主要语言. html标签中的大部分都是由"语义化"标签所担任 那么,它有 ...

  9. explorer.exe 该文件没有与之关联的程序来执行该操作

    删了点右键的东西搞出来的问题 其实就是关联出错了,解决:(新建一个temp.reg,内容如下,然后双击导入注册表即可) Windows Registry Editor Version 5.00 [[H ...

  10. [翻译] 编写高性能 .NET 代码--第二章 GC -- 减少大对象堆的碎片,在某些情况下强制执行完整GC,按需压缩大对象堆,在GC前收到消息通知,使用弱引用缓存对象

    减少大对象堆的碎片 如果不能完全避免大对象堆的分配,则要尽量避免碎片化. 对于LOH不小心就会有无限增长,但LOH使用的空闲列表机制可以减轻增长的影响.利用这个空闲列表,我们可以在两块分配区域中间找到 ...