在某些狀況下,你可能但願經過在每幀中添加數據並保留先前添加的數據來進行動畫處理。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
包含字段year
和value
,後者是全球年平均氣溫,相比於1900-2000的平均水平。函數
由於這是一個點-線圖,它包括geom_line
與geom_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循環:
# 列出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:
# 用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應該以下所示:
最受歡迎的看法
3.Python數據可視化-seaborn Iris鳶尾花數據
7.R語言動態可視化:製做歷史全球平均溫度的累積動態折線圖動畫gif視頻圖