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

7次阅读

共计 2367 个字符,预计需要花费 6 分钟才能阅读完成。

原文链接: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 蕴含字段 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 应该如下所示:


最受欢迎的见解

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 可视化

正文完
 0