R语言动态可视化:绘制历史全球平均温度的累积动态折线图动画gif视频图

简介: R语言动态可视化:绘制历史全球平均温度的累积动态折线图动画gif视频图

在某些情况下,你可能希望通过在每帧中添加数据并保留先前添加的数据来进行动画处理。

现在,我们将通过制作点线图的动画来探索。

以下是制作图表静态版本的代码:

#读取数据
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包含字段yearvalue,后者是全球年平均气温,相比于1900-2000的平均水平。

因为这是一个点-线图,它包括geom_linegeom_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动画效果可通过阅读原文查看


相关文章
|
6月前
|
数据可视化 数据挖掘 图形学
R语言基础可视化:使用ggplot2构建精美图形的探索
【8月更文挑战第29天】 `ggplot2`是R语言中一个非常强大的图形构建工具,它基于图形语法提供了一种灵活且直观的方式来创建各种统计图形。通过掌握`ggplot2`的基本用法和美化技巧,你可以轻松地将复杂的数据转化为直观易懂的图形,从而更好地理解和展示你的数据分析结果。希望本文能够为你探索`ggplot2`的世界提供一些帮助和启发。
|
6月前
|
数据可视化 数据挖掘 数据处理
R语言高级可视化技巧:使用Plotly与Shiny制作互动图表
【8月更文挑战第30天】通过使用`plotly`和`shiny`,我们可以轻松地创建高度互动的数据可视化图表。这不仅增强了图表的表现力,还提高了用户与数据的交互性,使得数据探索变得更加直观和高效。本文仅介绍了基本的使用方法,`plotly`和`shiny`还提供了更多高级功能和自定义选项,等待你去探索和发现。希望这篇文章能帮助你掌握使用`plotly`和`shiny`制作互动图表的技巧,并在你的数据分析和可视化工作中发挥更大的作用。
|
9月前
|
数据可视化 数据挖掘 API
【R语言实战】聚类分析及可视化
【R语言实战】聚类分析及可视化
|
6月前
|
数据可视化
R语言可视化设计原则:打造吸引力十足的数据可视化
【8月更文挑战第30天】R语言可视化设计是一个综合性的过程,需要综合运用多个设计原则来创作出吸引力十足的作品。通过明确目标、选择合适的图表类型、合理运用色彩与视觉层次、明确标注与引导视线以及引入互动性与动态效果等原则的应用,你可以显著提升你的数据可视化作品的吸引力和实用性。希望本文能为你提供一些有益的启示和帮助。
|
9月前
|
数据采集 数据可视化
利用R语言进行因子分析实战(数据+代码+可视化+详细分析)
利用R语言进行因子分析实战(数据+代码+可视化+详细分析)
|
9月前
|
Web App开发 数据可视化 数据挖掘
利用R语言进行聚类分析实战(数据+代码+可视化+详细分析)
利用R语言进行聚类分析实战(数据+代码+可视化+详细分析)
|
9月前
|
移动开发 数据可视化
广义线性模型beta二项分布的淋巴结疾病风险预测可视化R语言2实例合集|附数据代码
广义线性模型beta二项分布的淋巴结疾病风险预测可视化R语言2实例合集|附数据代码
|
5月前
|
数据采集 机器学习/深度学习 数据可视化
R语言从数据到决策:R语言在商业分析中的实践
【9月更文挑战第1天】R语言在商业分析中的应用广泛而深入,从数据收集、预处理、分析到预测模型构建和决策支持,R语言都提供了强大的工具和功能。通过学习和掌握R语言在商业分析中的实践应用,我们可以更好地利用数据驱动企业决策,提升企业的竞争力和盈利能力。未来,随着大数据和人工智能技术的不断发展,R语言在商业分析领域的应用将更加广泛和深入,为企业带来更多的机遇和挑战。
|
4月前
|
数据挖掘 C语言 C++
R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。
【10月更文挑战第21天】时间序列分析是一种重要的数据分析方法,广泛应用于经济学、金融学、气象学、生态学等领域。R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。本文将介绍使用R语言进行时间序列分析的基本概念、方法和实例,帮助读者掌握R语言在时间序列分析中的应用。
79 3
|
9月前
|
机器学习/深度学习 数据可视化
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为2
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为