拓端数据(tecdat)|R语言动态可视化:绘制历史全球平均温度的累积动态折线图动画gif视频图

原文连接:http://tecdat.cn/?p=9766

在某些状况下,你可能但愿经过在每帧中添加数据并保留先前添加的数据来进行动画处理。python

如今,咱们将经过制做点线图的动画来探索。算法

如下是制做图表静态版本的代码:segmentfault

#读取数据
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")

结果应该是:ide

该文件warming.csv包含字段yearvalue,后者是全球年平均气温,相比于1900-2000的平均水平。函数

由于这是一个点-线图,它包括geom_linegeom_point层。咱们能够将轮廓设置color为黑色,而后aes根据温度使用映射将其填充为颜色value动画

该代码用于scale_fill_distiller使用ColorBrewer调色板,该调色板从冷蓝色,中性黄色到暖红色,并将它们应用于从-1到+1的一系列值。ui

一样,咱们能够设置数据动画:url

代码的工做方式

  • transition_reveal。当along时间变量的每一个值添加到图表中时,这将保留先前显示的数据。id经过使其等于所讨论的类别变量,可用于为多个类别建立单独的行;不然使用id = 1

transition_reveal其默认是显示线条,仅绘制当前帧的点:spa

要建立点的累积动画,使用以下代码:code

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

相关文章
相关标签/搜索