有沒有一種簡單的方法可以通過在R內拼接幾個圖來創建「電影」?從R系列圖中創建電影
回答
這是一個方法,我發現,使用R幫助:
要創建單獨的圖像幀:
jpeg("/tmp/foo%02d.jpg")
for (i in 1:5) {
my.plot(i)
}
dev.off()
拍電影,第一次安裝ImageMagick。 然後調用下面的函數(所謂的「轉化」,我想的ImageMagick的一部分):
make.mov <- function(){
unlink("plot.mpg")
system("convert -delay 0.5 plot*.jpg plot.mpg")
}
,或者由於本article(我發現這給清潔效果)描述嘗試使用ffmpeg的功能: ffmpeg -r 25 -qscale 2 -i tmp/foo%02d.jpg output.mp4
可能需要一點修補,但是一旦安裝了所有東西,這似乎很簡單。
當然,無論你看到「jpg」還是「jpeg」,都可以用GIF或PNG來替代你的幻想。
我不知道這是可能的R.我做了一個項目時,一次從R數據點被導出到一個MySQL數據庫和一個Flex/Flash應用程序拿起這些數據點又給動畫視覺化..
您不需要數據庫。在一個循環中,保存所有圖像。然後使用命令行工具將它們拼接在一起; imagemagick是一種可能性。 – 2009-08-19 12:14:50
是的,這是最簡單的方法。我想由於操作系統的模塊化,除非R是用特殊的庫或類似的東西編譯的,否則在R中不可能這樣做。 – 2009-08-19 15:07:51
這是一個聰明的技巧,Srirangan。 很多年前我學到,當有人說'這不可能'時,他們的意思是'我不知道該怎麼做'。 該技巧的巧妙之處在於,在諸如SO這樣的論壇中,有人必然會告訴你如何去做。順便說一句,我並不是諷刺。我真的認爲這是一種很好的技術,我會嘗試一下。謝謝Srirangan。 – pavium 2009-08-20 00:09:23
如果你將R腳本封裝在更大的Perl/Python /等內。腳本,您可以將圖形與您喜歡的命令行圖像拼接工具一起縫合。
要使用包裝腳本運行R腳本,請使用R CMD BATCH
方法。
爲什麼你需要另一種語言來使用命令行工具? – hadley 2009-08-19 12:12:18
那麼需要Perl/Python腳本?另外,將Rscript(和littler)看作是'R CMD BATCH'的更好替代品。 – 2009-08-19 12:12:47
你不需要另一種語言。你可以使用像bash這樣的shell。任何你想要的。有很多選擇。我使用R CMD BATCH,因爲它在多個平臺上或多或少是通用的。 – 2009-08-19 14:14:44
我想你也可以用caTools庫中的write.gif函數來做到這一點。你必須先把你的圖形變成一個多幀圖像。我不知道該怎麼做。任何人? Bueller?
GIF動畫的經典例子是這樣的代碼,我沒有寫,但我沒有blog about前段時間:
library(fields) # for tim.colors
library(caTools) # for write.gif
m = 400 # grid size
C = complex(real=rep(seq(-1.8,0.6, length.out=m), each=m), imag=rep(seq(-1.2,1.2, length.out=m), m))
C = matrix(C,m,m)
Z = 0
X = array(0, c(m,m,20))
for (k in 1:20) {
Z = Z^2+C
X[,,k] = exp(-abs(Z))
}
image(X[,,k], col=tim.colors(256)) # show final image in R
write.gif(X, 'Mandelbrot.gif', col=tim.colors(256), delay=100)
代碼歸功於亞雷克Tuszynski,博士學位。
我已經做了一些使用XNview的(免費圖形瀏覽器)創建幻燈片功能的電影。我想通過空間數據顯示時間趨勢,所以我只創建了一系列圖,按順序命名[paste()是各種命名calistethics的朋友],然後將它們加載到XNviews幻燈片對話框中,並設置一些計時器變量,瞧。花了5分鐘來學習如何做,併產生一些可執行的圖形。
下面是從HDF5文件製作動畫GIF「電影」的完整示例。數據應該是3維數組的HDF數據集[Nframes] [Nrows] [Ncolumns]。
#
# be sure to be run as Administrator to install new packages
#
source("http://bioconductor.org/biocLite.R")
biocLite("rhdf5")
install.packages('caTools')
install.packages('fields')
library(caTools)
library(fields)
library(rhdf5)
x = h5read(file="mydata.h5",name="/Images")
write.gif(x,"movie1.gif",col=rainbow,delay=10,flip=TRUE)
- 1. 如何通過perl從一系列圖像創建Quicktime電影?
- 2. 如何從一系列生成的圖像創建Quicktime電影?
- 3. WP7:從位圖圖像創建電影
- 4. 從R系列宣傳單地圖創建一個gif
- 5. 從一系列圖像創建視頻?
- 6. 從R中的白噪聲創建一個ARCH系列
- 7. 從變量創建電子郵件R
- 8. 從IMDb獲取人與電影/電視系列片的獎項
- 9. 從系列創建預測
- 10. 從(x,y)中創建熱圖在R
- 11. R:在投影座標系上創建一個協變量
- 12. 在圖表中動態創建系列
- 13. 導出通過循環變量列表創建的一系列圖(在R中)
- 14. 如何構建電影推薦系統?
- 15. 是否可以用ffmpeg創建示例電影(迷你電影)?
- 16. 如何從電影中創建動畫.gif?
- 17. 如何從c#中的一組圖像創建H.264編碼的電影?
- 18. 如何從圖像*與圖像之間的轉換創建電影*
- 19. R如何創建單列表熱圖
- 20. 用avassetwriter創建動畫電影文件
- 21. iPhone創建模態電影窗口
- 22. 我可以手動創建電影嗎?
- 23. 爲iPhone創建參考電影
- 24. 創建用戶電影評級數組
- 25. 用R中的循環創建時間系列
- 26. R:如何從多列頻率數據創建條形圖?
- 27. 在R中爲單個列創建一個列圖
- 28. 創建r中
- 29. 創建r中
- 30. 創建R中
您甚至可以將jpeg()和dev.off()保留在循環之外 - 如果您使用適當的文件名作爲例如jpeg(「/ tmp/foo%02d.png」),R會在你的循環中簡單地創建新文件。不需要你計算文件名。使它更容易。 – 2009-08-19 15:36:41
你應該讓Dirk的修復,然後接受你自己的答案。好的解決方案 – 2009-08-19 15:47:10
很有用...但在R中運行函數'make.mov'後發現很難理解.mpg文件的保存位置?我正在R平臺上工作。 – ToNoY 2014-10-04 04:30:43