拓端數據(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可視化

相關文章
相關標籤/搜索