前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用R语言让你的可视化图表动起来!动起来!!附源代码

用R语言让你的可视化图表动起来!动起来!!附源代码

作者头像
拴小林
发布2020-07-10 16:00:20
7060
发布2020-07-10 16:00:20
举报
文章被收录于专栏:数据驱动实践数据驱动实践
“经过2天的多次尝试和修改,终于实现了R图表的动态可视化,满是心路……”

01

上视频

02

上代码

代码语言:javascript
复制
### 声  明:本内容为作者借助R3.6.3和Rstudio及相关包制作而成,仅供学习交流,咨询交流加wx:huyanggs 或Email:huyanggs@hotmail.com
### 主  题:动态折线图 ·中国2000-2019年国内生产总值(GDP)及分产业变动
### 数据源:中国国家统计局·国家数据
### author:@拴小林Nobeli
### 时  间:2020/3/22


# 1.loading packages
library(ggplot2) 
library(readxl)
library(av) #动态输出批量图为视频
library(tidyr)

# 2.读取数据和整理数据
setwd("C:/Users/ysl/Desktop/")
dt <- readxl::read_xlsx("C:/Users/ysl/Desktop/CHINA_GDP.xlsx")
dt_s <- dt[,c(1,3:6)]


# 3.转换数据结构+变量标签化
dt_tidyr <- gather(dt_s, GDPs, value,-Year)
dt_tidyr$GDPs <- factor(dt_tidyr$GDPs, levels = c("GDP", "First_GDP", "Second_GDP", "Third_GDP"),
                        labels = c("国内生产总值(GDP·万亿)", "第一产业GDP(万亿)", "第二产业GDP(万亿) ", "第三产业GDP(万亿)"))

# 3.将逐年数据批量print,并保存到自定义函数makeplot中
# 注释:学习av包,可 ??av_demo 和 ??av_capture_graphics
makeplot <- function(){
  dtlist <- NULL
  j = NULL
  for (i in 2000:max(dt_tidyr$Year)) {
    j = i-1999
    dtlist[[j]] <- dt_tidyr[dt_tidyr$Year %in% c(2000:i),]}


  lapply(dtlist, function(data){
    p <- ggplot(data, aes(x = Year, y = value, group = GDPs, color = GDPs, shape = GDPs)) +
      geom_point(labels = data$value) +
      geom_line(color = "grey") +
      scale_x_continuous(limits = range(dt_tidyr$Year)) +
      scale_y_continuous(limits = range(dt_tidyr$value)) +
      labs(x = "年份", y = "产值") +
      ggtitle("中国2000至2019年国内生产总值", 
              subtitle = paste0(max(data$Year),"年国内生产总值",data[which(data$Year == max(data$Year)),][which(data[which(data$Year == max(data$Year)),]$GDPs == "国内生产总值(GDP·万亿)"),"value"],"万亿元")) +
      theme_classic() +
      theme(plot.title = element_text(color = "black", size = 16, vjust = 0.5,hjust = 0.5),
            legend.position = "bottom", legend.text = element_text(size = 8))

    print(p)
  })
}

# 4.将图片数据输出为视频
# library(av)
video_file <- file.path(getwd(), "output.mp4") #设置保存路径及文件名
av_capture_graphics(makeplot(), video_file, 1280, 720, res = 144, vfilter = "framerate=fps=10") #参数意义可??av_capture_graphics学习
av::av_media_info(video_file)

03

上数据

源数据及R代码:

链接:https://pan.baidu.com/s/1xn4Fq2DvMOTZMQAvrFAB1A

提取码:fj2a

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-03-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据驱动实践 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档