2011-02-05 121 views

回答

3

下面是一些基本的代碼讓你開始(你可以添加網格線,傳說等,如果他們對你很重要)依賴於平臺:

plotfun <- function(x) { 
    plot(c(-0.5,-0.5,0.5,0.5), c(0,1,1,0), col='blue', xlim=c(-2,2), 
     type='l', xlab='', ylab='') 
    if(x > -1 && x < 0) { 
     polygon(c(-0.5, -0.5, x+0.5, x+0.5), c(0,1,1,0), col='yellow', border=NA) 
     lines(c(-0.5, -0.5, 0.5, 0.5), c(0,1,1,0), col='blue') 
     lines(c(-1,x), c(0,x+1)) 
    } else if(x >= 0 && x < 1) { 
     polygon(c(x-0.5, x-0.5, 0.5, 0.5), c(0,1,1,0), col='yellow', border=NA) 
     lines(c(-0.5, -0.5, 0.5, 0.5), c(0,1,1,0), col='blue') 
     lines(c(-1,0,x), c(0,1,1-x)) 
    } else if (x >= 1) { 
     lines(c(-1,0,1), c(0,1,0)) 
    } 
    abline(v=x, lty=3) 
    lines(c(x-0.5,x-0.5,x+0.5,x+0.5), c(0,1,1,0), col='red') 
} 

dev.new(height=3, width=6) 

for(i in seq(-2.5, 2.5, 0.05)) { 
    plotfun(i) 
    Sys.sleep(0.1) 
} 

你可以使用repeate或while循環替換for循環,並控制增量並自動重置以執行多個循環。

您也可以刪除Sys.sleep,並將其放入調用saveMovie,saveHTML或其他函數的動畫包中,以創建一個帶有動畫的文件。

另一種方法,可以讓你通過移動滑塊來回控制動畫:

library(TeachingDemos) 

tkexamp(plotfun, list(x=list('slider', from=-2.5, to=2.5, resolution=0.01)), 
    vscale=1) 
+0

甜。這在創建我需要的內容時很有用。謝謝! – user236215 2011-02-05 17:40:00

4

兩個快速點:

  • 老同學訣竅是寫的GIF文件序列單獨在一個循環中,並再使用工具,如ImageMagick的,以「粘」在一起成GIF動畫

  • 還有更高級別的軟件包,例如屢獲殊榮的animation,有助於此;某些功能可能