本文主要展示如何利用R语言中ggplot2和gganimate包绘制动态折线图。
1、数据准备
以北京、天津、上海、重庆四个直辖市2001-2020年人均GDP为例,展示绘制动态折线图。数据可在国家统计局[1]官网获取。
setwd("C:\\Users\\Acer\\Desktop")
#install.packages("reshape2")
#install.packages("ggplot2")
#install.packages("gganimate")
#install.packages("RColorBrewer")
library(reshape2)
library(ggplot2)
library(gganimate)
library(RColorBrewer)
city_data <- read.csv("C:\\Users\\Acer\\Desktop\\作图演示数据\\city.csv")
city <- reshape2::melt(city_data, id.vars = "Year", variable.name = "City", value.name = "Per.GDP") #数据转换
head(city)
# Year City Per.GDP
#1 2001 Beijing 28097
#2 2002 Beijing 32231
#3 2003 Beijing 36583
#4 2004 Beijing 42402
#5 2005 Beijing 47182
#6 2006 Beijing 53438
str(city)
#'data.frame': 80 obs. of 3 variables:
# $ Year : int 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 ...
# $ City : Factor w/ 4 levels "Beijing","Tianjin",..: 1 1 1 1 1 1 1 1 1 1 ...
# $ Per.GDP: int 28097 32231 36583 42402 47182 53438 63629 68541 71059 78307 ...
2、图形绘制
2.1 基本折线图绘制
ggplot(data = city, aes(x = Year, y = Per.GDP,group = City, color = City, shape = City)) +
geom_line() +
geom_point( size = 3) +
scale_color_brewer(palette = "Set1") +
labs(x = "年份", y = "人均GDP") +
theme_bw() +
theme(legend.position = c(0.2,0.8),
legend.background = element_blank(),
legend.title = element_text(size = 15),
legend.text = element_text(size = 10),
axis.text.y = element_text(angle = 90))

2.2 动态折线图绘制。利用gganimate包中的transition_reveal() 函数绘制动态图,along参数指定动态变量。
ggplot(data = city, aes(x = Year, y = Per.GDP,group = City, color = City, shape = City)) +
geom_line() +
geom_point( size = 3) +
scale_color_brewer(palette = "Set1") +
labs(x = "年份", y = "人均GDP") +
theme_bw() +
theme(legend.position = c(0.2,0.8),
legend.background = element_blank(),
legend.title = element_text(size = 15),
legend.text = element_text(size = 10),
axis.text.y = element_text(angle = 90)) +
transition_reveal(along = Year)

3、其他
关于ggplot2绘制折线图可进一步阅读R语言绘图|折线图与面积图绘制。关于gganimate[2]可以进一步阅读CRAN上的帮助文档。
如有帮助请多多点赞哦!
参考资料
国家统计局: https://data.stats.gov.cn/index.htm
[2]gganimate: https://cran.r-project.org/web/packages/gganimate/gganimate.pdf
文章转载自日常分享的小懒猫,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。