R語言動態(tài)可視化:制作歷史全球平均溫度的累積動態(tài)折線圖動畫gif視頻圖|附代碼數(shù)據(jù)
全文鏈接:http://tecdat.cn/?p=9766
原文出處:拓端數(shù)據(jù)部落公眾號
最近我們被客戶要求撰寫關(guān)于動態(tài)可視化的研究報告,包括一些圖形和統(tǒng)計輸出。
?在某些情況下,你可能希望通過在每幀中添加數(shù)據(jù)并保留先前添加的數(shù)據(jù)來進(jìn)行動畫處理。
現(xiàn)在,我們將通過制作點線圖的動畫來探索。
以下是制作圖表靜態(tài)版本的代碼:
#讀取數(shù)據(jù)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 (oC)") + ?theme_minimal(base_size = 16, base_family = "Georgia")
結(jié)果應(yīng)該是:

該文件warming.csv
包含字段year
和value
,后者是全球年平均氣溫,相比于1900-2000的平均水平。
因為這是一個點-線圖,它包括geom_line
與geom_point
層。我們可以將輪廓設(shè)置color
為黑色,然后aes
根據(jù)溫度使用映射將其填充為顏色value
。
該代碼用于scale_fill_distiller
使用ColorBrewer調(diào)色板,該調(diào)色板從冷藍(lán)色,中性黃色到暖紅色,并將它們應(yīng)用于從-1到+1的一系列值。
同樣,我們可以設(shè)置數(shù)據(jù)動畫:
代碼的工作方式
transition_reveal
。當(dāng)along
時間變量的每個值添加到圖表中時,這將保留先前顯示的數(shù)據(jù)。id
通過使其等于所討論的類別變量,可用于為多個類別創(chuàng)建單獨的行;否則使用id = 1
。
transition_reveal
其默認(rèn)是顯示線條,僅繪制當(dāng)前幀的點:

要創(chuàng)建點的累積動畫,使用如下代碼:
shadow_mark
?保留先前幀中的數(shù)據(jù)。

使用for循環(huán)繪制并保存每年的圖表
要制作點和線的累積動畫,我們需要編寫一個循環(huán)為每幀創(chuàng)建一個單獨的圖像。
for循環(huán):
# 列出1880年至2017年的年份years <- c(1880:2017)# for循環(huán)每年輸出到控制臺,每次暫停一秒鐘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
代碼的第一行創(chuàng)建一個整數(shù)列表,其范圍為1880年至2017年。
這部分代碼將遍歷列表中的每個條目:for (y in years)
。
該代碼使用相同的原理來繪制并保存每年的圖表:
該代碼如何工作
對于每一年,y
該代碼首先都會使一個稱為R的R對象。
然后,它創(chuàng)建一個名為的R對象chart
,這是從該數(shù)據(jù)繪制的靜態(tài)ggplot2圖。
然后,使用該ggsave
函數(shù)以定義的尺寸和分辨率保存該圖表,從而在循環(huán)上進(jìn)行進(jìn)度更新。
該ggsave
代碼利用了R函數(shù)paste0
。
將幀合并為GIF和視頻
首先使用制作GIF:
# 用ImageMagick制作GIFsystem("convert -delay 10 charts/*.jpg warming2.gif")# 增加GIF最后一幀的延遲system("convert warming2.gif \( +clone -set delay 300 \) +swap +delete warming2_with_pause.gif")
這段代碼創(chuàng)建了一個名為的GIF?warming2.gif
?,F(xiàn)在制作視頻:
# 用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
根據(jù)圖像序列創(chuàng)建視頻。
制作動畫,在模擬人類對全球平均氣溫的影響與自然影響之間進(jìn)行切換
循環(huán)動畫還可以用于在不同狀態(tài)或數(shù)據(jù)的篩選視圖之間切換。為了說明這一點,我們將加載NASA數(shù)據(jù),該數(shù)據(jù)顯示來自氣候模型的模擬,該模擬比較了自然事件(例如,來自太陽的輻射變化和來自火山噴發(fā)的煙塵的冷卻效應(yīng))在自然事件的影響下的全球平均溫度將如何變化。對人類的影響,主要是二氧化碳和其他溫室氣體的排放。
代碼的工作方式
transition_state
。這會在數(shù)據(jù)的不同過濾狀態(tài)之間切換,此處由變量定義type
。ease_aes
使用狀態(tài)過渡動畫時,使用可改變過渡速度的選項"{closest_state}"
在ggtitle
函數(shù)中使用會在此處顯示用于定義狀態(tài)的變量的適當(dāng)值type
。
GIF應(yīng)該如下所示:


最受歡迎的見解
1.R語言動態(tài)圖可視化:如何、創(chuàng)建具有精美動畫的圖
2.R語言生存分析可視化分析
3.Python數(shù)據(jù)可視化-seaborn Iris鳶尾花數(shù)據(jù)
4.r語言對布豐投針(蒲豐投針)實驗進(jìn)行模擬和動態(tài)
5.R語言生存分析數(shù)據(jù)分析可視化案例
6.r語言數(shù)據(jù)可視化分析案例:探索brfss數(shù)據(jù)數(shù)據(jù)分析
7.R語言動態(tài)可視化:制作歷史全球平均溫度的累積動態(tài)折線圖動畫gif視頻圖
8.R語言高維數(shù)據(jù)的主成分pca、 t-SNE算法降維與可視化分析案例報告
9.python主題LDA建模和t-SNE可視化