2015-03-02 17 views
5

Büyük bir veri kümesinden (döngüsel bir bilimsel denemeden), iki değişkendeki değişimi zaman içinde görselleştirmek için animasyonlu bir çizim yapmaya çalışıyorum. 'sadece basitçe ile animation kütüphane kullanıyorum:R: Animasyon ve ggplot ile "InvalidArgument" -delay "

mygraph(i) sadece döngüsü için grafiğini çizer
saveGIF(
    for(i in 1:100){ 
    mygraph(i) 
}, interval = 0.1, ani.width = 640, ani.height = 480) 

i grafiği yapmak için plot() kullanırsanız, o zaman mükemmel çalışıyor, ama bunun yerine (ggplot kullanırsanız. Sonunda bunu daha karmaşık araziler yapmak için kullanmak istediğim gibi yapmak istiyorum, o zaman işe yaramıyor ve şu çıktıyı elde ediyorum:

Executing: 
'convert' -loop 0 -delay 'animation.gif' 
convert: InvalidArgument `-delay': animation.gif @ error/convert.c/ConvertImageCommand/1161. 
an error occurred in the conversion... see Notes in ?im.convert 
[1] FALSE 

R için çok iyiyim, bu yüzden biraz takılıyorum ve ?im.convert numaralı telefondan ya da çevreden arama yaparak bir çözüm üretmedim. istendiği gibi herhangi bir öneriniz muazzam taklit veriler ...

Örnek mutluluk duyacağız:

library(animation) 
library(ggplot2) 

x <- 1:20 
y <- 21:40 
z <- c(1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4) 
data <- data.frame(x,y,z) 

mygraph <- function(i) { 
    plot(data$x[data$z == i], 
     data$y[data$z == i], 
     title(title)) 
} 

saveGIF(
    for(i in 1:4){ 
    title <- paste("Cycle", i, sep=" ") 
    mygraph(i) 
    }, interval = 0.5, ani.width = 640, ani.height = 480) 

Bu çalışır, ancak işlevi mygraph yerine ise:

mygraph <- function(i) { 
    ggplot() + 
    geom_point(aes(x=data$x[data$z == i], y=data$x[data$z == i])) 
} 

... o zaman bana yukarıda belirtildiği gibi hata veriyor.

+0

Bize bir küçük tekrarlanabilir örnek verebilirim lütfen? –

+0

Özgün sorumu, aynı hatayı veren basitleştirilmiş bir örnekle düzenledim. – mjlacey

cevap

5

ggplot bir print() deyiminde, örn.

mygraph <- function(i) { 
    g <- ggplot() + 
    geom_point(aes(x=data$x[data$z == i], y=data$x[data$z == i])) 
    print(g) 
} 

Bu R-SSS 7.22 bir varyantı, Why do lattice/trellis graphics not work?

+0

Teşekkür ederim, bu amaçlandığı gibi çalışıyor! – mjlacey

+0

Eğer bu cevap sorununuzu çözerse, onaylamak için onay işaretini tıklatmanız tavsiye edilir ... –