zoukankan      html  css  js  c++  java
  • R语言-动画

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

    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.创建动态图形(展示每一个月的变化)

    #使用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 # 选择月份中展示的日期展示(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年之后女权社区王拉丁美洲开始逐步的发展

  • 相关阅读:
    时间序列数据库(TSDB)初识与选择(InfluxDB、OpenTSDB、Druid、Elasticsearch对比)
    Prometheus COMPARISON TO ALTERNATIVES
    认真分析mmap:是什么 为什么 怎么用
    Flume学习之路 (二)Flume的Source类型
    Flume学习之路 (一)Flume的基础介绍
    Spark学习之路 (二十一)SparkSQL的开窗函数和DataSet
    Spark学习之路 (二十)SparkSQL的元数据
    CentOS 7的安装
    Spark学习之路 (十九)SparkSQL的自定义函数UDF
    Spark学习之路 (十八)SparkSQL简单使用
  • 原文地址:https://www.cnblogs.com/luhuajun/p/8526037.html
Copyright © 2011-2022 走看看