本文主要展示在R语言
中如何利用barRacer[1]包绘制动态变化的条形图,绘图效果如下图所示:
1、数据来源
以国家统计局[2]官方网站上关于2001-2020年我国31个省份常住人口(未包含港澳台数据)为例,利用动态条形图展示各省份常住人口的变化,数据可在国家统计局官网自行下载。
devtools::install_github("jl5000/barRacer")
install.packages("gifski")
library(barRacer)
library(reshape2)
library(gganimate)
mydata <- readxl::read_xlsx("C:\\Users\\Acer\\Desktop\\常用数据\\常住人口.xlsx")
# A tibble: 6 x 21
# province y2020 y2019 y2018 y2017 y2016 y2015 y2014 y2013 y2012 y2011 y2010 y2009 y2008 y2007 y2006 y2005 y2004 y2003 y2002 y2001
# <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#1 北京 2189 2190 2192 2194 2195 2188 2171 2125 2078 2024 1962 1860 1771 1676 1601 1538 1493 1456 1423 1385
#2 天津 1387 1385 1383 1410 1443 1439 1429 1410 1378 1341 1299 1228 1176 1115 1075 1043 1024 1011 1007 1004
#3 河北 7464 7447 7426 7409 7375 7345 7323 7288 7262 7232 7194 7034 6989 6943 6898 6851 6809 6769 6735 6699
#4 山西 3490 3497 3502 3510 3514 3519 3528 3535 3548 3562 3574 3427 3411 3393 3375 3355 3335 3314 3294 3272
#5 内蒙 2403 2415 2422 2433 2436 2440 2449 2455 2464 2470 2472 2458 2444 2429 2415 2403 2393 2386 2384 2381
#6 辽宁 4255 4277 4291 4312 4327 4338 4358 4365 4375 4379 4375 4341 4315 4298 4271 4221 4217 4210 4203 4194
data <- reshape2::melt(mydata,id.vars = "province", value.name = "POP" ,variable.name = "year")
data$year <- factor(data$year, levels = paste("y", 2001:2020, sep = ""), labels = 2001:2020)
data$year <- as.integer(as.character(data$year))
head(data)
# province year POP
#1 北京 2020 2189
#2 天津 2020 1387
#3 河北 2020 7464
#4 山西 2020 3490
#5 内蒙 2020 2403
#6 辽宁 2020 4255
str(data)
#'data.frame': 620 obs. of 3 variables:
# $ province: chr "北京" "天津" "河北" "山西" ...
# $ year : int 2020 2020 2020 2020 2020 2020 2020 2020 2020 2020 ...
# $ POP : num 2189 1387 7464 3490 2403 ...
2、图形绘制
利用barRacer包中的bar_chart_race()
函数来绘制动态变化的条形图。其中,参数cat_col
指定分类变量,val_col
指定数值变量,time_col
指定时间变量,max_bars
表示显示条形的个数,duration
和fps
用来控制运动速度和帧率,width
和height
用来控制宽度和高度,title表示图形标题。anim_save()
函数用来保存图形。但如何对图形的颜色进行修改暂未找到解决方法
。
bar_chart_race(data, cat_col=province, val_col=POP, time_col=year,
max_bars=31, duration = 10, fps = 30, width = 1200,
height=900, title = "2001-2020年常住人口变化(万人)")
anim_save("2001-2020年常住人口变化.gif") #保存图

其他
关于其他动态图的绘制可参考R语言绘图|动态折线图,R语言绘图|动态散点图,R语言绘图|分面动态散点图。
如有帮助请多多点赞哦!
参考资料
barRacer: https://github.com/jl5000/barRacer
[2]国家统计局: https://data.stats.gov.cn/index.htm
文章转载自日常分享的小懒猫,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




