码迷,mamicode.com
首页 > 编程语言 > 详细

R语言-动画

时间:2018-03-08 02:36:35      阅读:279      评论:0      收藏:0      [点我收藏+]

标签:比例   alpha   无法找到   world   nim   世界   选择   指定   有一个   

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

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年之后女权社区王拉丁美洲开始逐步的发展

 

R语言-动画

标签:比例   alpha   无法找到   world   nim   世界   选择   指定   有一个   

原文地址:https://www.cnblogs.com/luhuajun/p/8526037.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!