拓端tecdat|R语言动态可视化:制作历史全球平均温度的累积动态折线图动画gif视频图
原文链接:http://tecdat.cn/?p=9766
原文出处:拓端数据部落公众号
在某些情况下,你可能希望通过在每帧中添加数据并保留先前添加的数据来进行动画处理。
现在,我们将通过制作点线图的动画来探索。
以下是制作图表静态版本的代码:
#读取数据
warming <- read_csv("warming.csv")#绘图
warming_plot <- ggplot(warming, aes(x = year, y = value)) +geom_line(colour="black") +geom_point(shape = 21, colour = "black", aes(fill = value), size=5, stroke=1) +scale_x_continuous(limits = c(1880,2017)) +scale_y_continuous(limits = c(-0.5,1)) +scale_fill_distiller(palette = "RdYlBu", limits = c(-1,1), guide = FALSE) +xlab("") +ylab("Difference from 1900-2000 (ºC)") +theme_minimal(base_size = 16, base_family = "Georgia")
结果应该是:
该文件warming.csv
包含字段year
和value
,后者是全球年平均气温,相比于1900-2000的平均水平。
因为这是一个点-线图,它包括geom_line
与geom_point
层。我们可以将轮廓设置color
为黑色,然后aes
根据温度使用映射将其填充为颜色value
。
该代码用于scale_fill_distiller
使用ColorBrewer调色板,该调色板从冷蓝色,中性黄色到暖红色,并将它们应用于从-1到+1的一系列值。
同样,我们可以设置数据动画:
代码的工作方式
transition_reveal
。当along
时间变量的每个值添加到图表中时,这将保留先前显示的数据。id
通过使其等于所讨论的类别变量,可用于为多个类别创建单独的行;否则使用id = 1
。
transition_reveal
其默认是显示线条,仅绘制当前帧的点:
要创建点的累积动画,使用如下代码:
shadow_mark
保留先前帧中的数据。
使用for循环绘制并保存每年的图表
要制作点和线的累积动画,我们需要编写一个循环为每帧创建一个单独的图像。
for循环:
# 列出1880年至2017年的年份
years <- c(1880:2017)# for循环每年输出到控制台,每次暂停一秒钟
for (y in years) {print(y)Sys.sleep(1)
}
输出:
[1] 1880
[1] 1881
[1] 1882
[1] 1883
[1] 1884
[1] 1885
[1] 1886
[1] 1887
代码的第一行创建一个整数列表,其范围为1880年至2017年。
这部分代码将遍历列表中的每个条目:for (y in years)
。
该代码使用相同的原理来绘制并保存每年的图表:
该代码如何工作
对于每一年,y
该代码首先都会使一个称为R的R对象。
然后,它创建一个名为的R对象chart
,这是从该数据绘制的静态ggplot2图。
然后,使用该ggsave
函数以定义的尺寸和分辨率保存该图表,从而在循环上进行进度更新。
该ggsave
代码利用了R函数paste0
。
将帧合并为GIF和视频
首先使用制作GIF:
# 用ImageMagick制作GIF
system("convert -delay 10 charts/*.jpg warming2.gif")# 增加GIF最后一帧的延迟
system("convert warming2.gif \\( +clone -set delay 300 \\) +swap +delete warming2_with_pause.gif")
这段代码创建了一个名为的GIF warming2.gif
。现在制作视频:
# 用FFmpeg制作视频
system("ffmpeg -f image2 -start_number 1880 -i charts/%d.jpg -vf 'scale=trunc(iw/2)*2:trunc(ih/2)*2' warming.mp4")# 改变视频的速度
system("ffmpeg -i warming.mp4 -vf 'setpts=2*PTS' warming_slow.mp4")
image2
根据图像序列创建视频。
制作动画,在模拟人类对全球平均气温的影响与自然影响之间进行切换
循环动画还可以用于在不同状态或数据的筛选视图之间切换。为了说明这一点,我们将加载NASA数据,该数据显示来自气候模型的模拟,该模拟比较了自然事件(例如,来自太阳的辐射变化和来自火山喷发的烟尘的冷却效应)在自然事件的影响下的全球平均温度将如何变化。对人类的影响,主要是二氧化碳和其他温室气体的排放。
代码的工作方式
transition_state
。这会在数据的不同过滤状态之间切换,此处由变量定义type
。ease_aes
使用状态过渡动画时,使用可改变过渡速度的选项"{closest_state}"
在ggtitle
函数中使用会在此处显示用于定义状态的变量的适当值type
。
GIF应该如下所示:
最受欢迎的见解
1.R语言动态图可视化:如何、创建具有精美动画的图
2.R语言生存分析可视化分析
3.Python数据可视化-seaborn Iris鸢尾花数据
4.r语言对布丰投针(蒲丰投针)实验进行模拟和动态
5.R语言生存分析数据分析可视化案例
6.r语言数据可视化分析案例:探索brfss数据数据分析
7.R语言动态可视化:制作历史全球平均温度的累积动态折线图动画gif视频图
8.R语言高维数据的主成分pca、 t-SNE算法降维与可视化分析案例报告
9.python主题LDA建模和t-SNE可视化
拓端tecdat|R语言动态可视化:制作历史全球平均温度的累积动态折线图动画gif视频图相关推荐
- R语言动态可视化:制作历史全球平均温度的累积动态折线图动画gif视频图
在某些情况下,你可能希望通过在每帧中添加数据并保留先前添加的数据来进行动画处理.最近我们被客户要求撰写关于动态可视化的研究报告,包括一些图形和统计输出. 现在,我们将通过制作点线图的动画来探索. 以下 ...
- 拓端tecdat|R语言逻辑回归(Logistic回归)模型分类预测病人冠心病风险
最近我们被客户要求撰写关于冠心病风险的研究报告,包括一些图形和统计输出. 相关视频:R语言逻辑回归(Logistic回归)模型分类预测病人冠心病风险 逻辑回归Logistic模型原理和R语言分类预测冠 ...
- 拓端tecdat|R语言线性回归和时间序列分析北京房价影响因素可视化案例
最近我们被客户要求撰写关于北京房价影响因素的研究报告,包括一些图形和统计输出. 目的 房价有关的数据可能反映了中国近年来的变化: 人们得到更多的资源(薪水),期望有更好的房子 人口众多 独生子女政策: ...
- 拓端tecdat|R语言用LOESS(局部加权回归)季节趋势分解(STL)进行时间序列异常检测
最近我们被客户要求撰写关于LOESS(局部加权回归)的研究报告,包括一些图形和统计输出. 这篇文章描述了一种对涉及季节性和趋势成分的时间序列的中点进行建模的方法.我们将对一种叫做STL的算法进行研究, ...
- 拓端tecdat|R语言向量误差修正模型 (VECMs)分析长期利率和通胀率影响关系
最近我们被客户要求撰写关于向量误差修正模型的研究报告,包括一些图形和统计输出. 向量自回归模型估计的先决条件之一是被分析的时间序列是平稳的.但是,经济理论认为,经济变量之间在水平上存在着均衡关系,可以 ...
- R语言ggplot2可视化:使用gganimate包和gapminder包为生成的动画文件gif设置尺寸、分辨率
R语言ggplot2可视化:使用gganimate包和gapminder包为生成的动画文件gif设置尺寸.分辨率 目录
- R语言ggplot2可视化添加希腊字母标签:图表题(title)中加入希腊字母、图中加入希腊字母标签
R语言ggplot2可视化添加希腊字母标签:图表题(title)中加入希腊字母.图中加入希腊字母标签 目录
- R语言ggplot2可视化:gganimate包transition_time函数创建动态散点图动画(gif)、shadow_wake函数配置动画的渐变效果(gradual falloff)拖尾效应
R语言ggplot2可视化:gganimate包基于transition_time函数创建动态散点图动画(gif).使用shadow_wake函数配置动画的渐变效果(gradual falloff)形 ...
- R语言ggplot2可视化在轴标签中添加上标(Superscript)和下标(subscript)实战
R语言ggplot2可视化在轴标签中添加上标(Superscript)和下标(subscript)实战 library(ggplot2) qplot(uptake, data = CO2) +xlab ...
- R语言数据可视化之数据分布图(直方图、密度曲线、箱线图、等高线、2D密度图)...
作者:穆晨 来源:https://www.cnblogs.com/muchen/p/5310732.html 阅读目录 数据分布图简介 绘制基本直方图 基于分组的直方图 绘制密度曲线 绘制基本箱线图 ...
最新文章
- MATLAB作二维傅里叶变换所需要注意和知道的东西(im2double、fft2、abs、imshow、二维傅里叶变换的物理意义)
- 网规:第1章计算机网络原理-1.6广域网与接入
- php 303,HTTP 的重定向301,302,303,307(转)
- JS_异步任务之流程控制
- python绘制混淆矩阵
- 【VS2017】VS2017离线安装教程
- 7z源码的编译与使用_markdown 格式
- python自学视频与excel_三大金融工具特训班_金融职场+智能量化高手必修课-Wind来袭+Python金融+Excel分析,全套视频教程学习资料通过百度云网盘下载...
- JavaWeb 简单实现客户信息管理系统
- 基于JAVA乐居租房网的设计与实现计算机毕业设计源码+系统+lw文档+部署
- Python学习笔记:第十四站 百宝箱
- Studio用布局编辑器设计UI界面
- Redis 远程连接( redis.conf 配置 auth 认证 重启 redis)
- Leetcode 300-最长递增子序列
- Alan Watt - Dream of life(生命之梦)
- npm ERR code ERR_SOCKET_TIMEOUT npm ERR 出现错误改正方法
- JDK 18 / Java 18 正式发布:九项 JDK 增强
- 虚拟空间考古?其实它早在一千年前就存在了 | 浅空间专栏
- autojs 简单使用
- Python学习:利用python解析GPS模块数据,并生成可视化地图显示
热门文章
- RHEL 6.2 Error: Cannot create GC thread. Out of system resources.
- Google 浏览器(2011)书签同步
- 软件项目版本号命名规则
- C语言基础5-预编译部分知识(#include+.h文件和.c文件的区别
- 大数据排重算法-布隆算法(BloomFilter)
- 如何删除gmail快捷链接?
- 区块链游戏《TmoLand明日世界》又叒叕更新了
- ionic 视图滚动到顶部
- android 在非UI线程更新UI仍然成功原因深入剖析
- Java多线程-新特征-锁(下)