手把手:如何用R制作动态图
如何用R制作动态的统计图呢?下面我们以“大数据文摘”国庆献礼的世界独立进程为例,手把手地教大家如何用R制作动态图。
-
安装制作GIF所需要的ImageMagic程序
从http://www.imagemagick.org/script/binary-releases.php网址下载相关的ImageMagic.exe。安装ImageMagic.exe。安装完成后启动Rstudio编写代码。
-
载入制作动画和地图的R程序包
library(animation)
library(maps)
-
输入相关数据
由于国家很多,这里只选择几个国家,足够说明问题就可以了。
mtitle <-c("660","1668","1776","1788","1840","1867","1880","1948","1949","1950","1990")
regList<-list(c("Japan"),c("UK"), c("USA"), c("Australia"),c("NewZealand"), c("Canada"), c("France"),c("Korea","South Korea"), c("China","Hungary"),c("Kuwait","India"),c("Russia","Germany","Yemen"))
对区域的列表采用了list形式,同一年成立的国家包含在一个regList[[k]]元素中,这样成立年份就和区域列表的元素一一对应了。
-
绘图函数绘制地图
采用maps包中的map函数绘制成立区域。代码如下:
#绘制空白世界地图
map("world")
#添加独立区域,着色
map("world", region=reg,exact=FALSE, add=TRUE, fill=TRUE, col="pink")
-
制作动态图
-
同一种颜色填充的世界独立进程动态图
#设定动画的时间间隔和帧数
oopt = ani.options(interval = 0.2, nmax =11)
#生成动画
for (i in 1:ani.options("nmax")){
map("world")
reg=""
reg=regList[[1]]
if (i>1) {
for (k in 2:i) {reg =c(reg,regList[[k]])}
}
map("world", region=reg, exact=FALSE, add=TRUE, fill=TRUE,col="pink")
title(mtitle[i])
#等待interval设置的时间长度
ani.pause()
}
#重载动画options
ani.options(oopt)
-
根据年份的不同,用不同颜色填充的世界独立进程动态图
oopt = ani.options(interval = 0.2, nmax =11)
amax=ani.options("nmax")
for (i in 1:amax) {
map("world")
for (k in 1:i) {
map("world",region=regList[[k]], exact=FALSE, add=TRUE, fill=TRUE,col=rgb(k+15,16,16,max=3*amax))
}
title(mtitle[i])
ani.pause()
}
ani.options(oopt)
-
生成HTML文件或GIF图
-
生成HTML文件
library(maps)
library(animation)
#设定网页文件所在目录
setwd("…./webpage")
mtitle <-c("660","1668","1776","1788","1840","1867","1880","1948","1949","1950","1990")
regList <- list(c("Japan"),c("UK"), c("USA"), c("Australia"),c("NewZealand"), c("Canada"), c("France"), c("Korea","SouthKorea"),c("China","Hungary"),c("Kuwait","India"),c("Russia","Germany","Yemen"))
saveHTML(
{
oopt = ani.options(interval = 0.2, nmax =11)
amax=ani.options("nmax")
for (i in 1:amax) {
map("world")
for (k in 1:i) {
map("world",region=regList[[k]], exact=FALSE, add=TRUE, fill=TRUE,col=rgb(k+15,16,16,max=3*amax))
}
title(mtitle[i])
ani.pause()
}
ani.options(oopt)
},img.name = "map1", imgdir ="./img", htmlfile = "map.html",
autobrowse =FALSE, title = "Demo of Country Independents")
-
生成GIF图
library(maps)
library(animation)
#设定GIF 图片所在目录
setwd("…./")
mtitle <-c("660","1668","1776","1788","1840","1867","1880","1948","1949","1950","1990")
regList <- list(c("Japan"),c("UK"), c("USA"), c("Australia"),c("NewZealand"), c("Canada"), c("France"),c("Korea","SouthKorea"),c("China","Hungary"),c("Kuwait","India"),c("Russia","Germany","Yemen"))
saveGIF(
{
oopt = ani.options(interval = 0.2, nmax =11)
amax=ani.options("nmax")
for (i in 1:amax) {
map("world")
for (k in 1:i) {
map("world",region=regList[[k]], exact=FALSE, add=TRUE, fill=TRUE,col=rgb(k+15,16,16,max=3*amax))
}
title(mtitle[i])
ani.pause()
}
ani.options(oopt)
},movie.name="demo.gif",img.name="map1")
粗略的就介绍到这里了。还可以生成flash等其他的动画,不一一列出了。祝大家工作、生活愉快!
原文发布时间为:2015-11-02
本文来自云栖社区合作伙伴“大数据文摘”,了解相关信息可以关注“BigDataDigest”微信公众号
相关文章
- FRE的扬帆启航——腾讯数据中心设施运营开发模式初探
- 今天QQ24岁,我们找到了首位用户!
- 2023,音视频技术将如何发展?
- 腾讯云音视频助力印尼在线招聘平台KUPU升级面试体验
- 腾讯全面上云之后的首次春保:这里的夜晚静悄悄
- 数字文旅周报95期 | 腾讯发布AIGC发展趋势报告
- 春节保卫战:腾讯百万 QPS 线上环境云压测方案解析
- 腾讯云虚拟直播产品视觉设计探索
- 腾讯连续四次上榜福布斯2023全球区块链50强
- 腾讯云牵手Mobily!
- 专精特新 ︱ 腾讯云 CODING 助力消费电子类企业高速发展期的研运一体化
- 团圆如期而至,未来如约启程 | 腾讯文旅祝您元宵节快乐!
- 腾讯云微服务引擎 TSE 1月产品动态
- 线上商超博弈:老将固守,抖音掀浪
- EasyNVR新版本无法对接到EasyNVS平台并报错login error,该如何解决?
- 自由能公式3 参数学习
- 今天我的公司涨了吗?零代码自动播报股价数据
- 如何搭建业务+研发一体化平台?
- 第06步《前端篇》第2章打造游戏界面第1课
- 第07步《前端篇》第2章打造游戏界面第2课