2015-03-02 16 views
5

Tôi đang cố tạo một ô hoạt hình trong R từ một tập dữ liệu lớn (từ một thử nghiệm khoa học tuần hoàn), để hình dung sự thay đổi trong hai biến theo thời gian. đang sử dụng các thư viện animation với chỉ đơn giản là:R: "InvalidArgument` -delay 'với hoạt ảnh và ggplot

saveGIF(
    for(i in 1:100){ 
    mygraph(i) 
}, interval = 0.1, ani.width = 640, ani.height = 480) 

nơi mygraph(i) chỉ mưu đồ thị cho chu kỳ i Nếu tôi sử dụng plot() để làm cho đồ thị, sau đó nó hoạt động hoàn toàn tốt đẹp, nhưng nếu tôi thay vì sử dụng ggplot (. mà tôi muốn làm khi cuối cùng tôi muốn sử dụng điều này để tạo ra các ô phức tạp hơn), sau đó nó không hoạt động và tôi nhận được kết quả sau:

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 

Tôi rất mới đối với R nên tôi hơi bị kẹt và tôi đã không tìm ra giải pháp nào từ việc xem số ?im.convert hoặc tìm kiếm xung quanh. Bất kỳ đề xuất sẽ được vô cùng đánh giá cao ...

Ví dụ với dữ liệu giả theo yêu cầu:

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) 

này hoạt động, nhưng nếu chức năng mygraph là thay vì:

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

... sau đó nó cho tôi lỗi như đã nêu ở trên.

+0

bạn có thể cho chúng ta một ví dụ tái sản xuất nhỏ xin vui lòng? –

+0

Đã chỉnh sửa câu hỏi ban đầu của tôi bằng ví dụ đơn giản cung cấp cho tôi lỗi tương tự. – mjlacey

Trả lời

5

Điều này có vẻ hoạt động nếu bạn quấn ggplot trong tuyên bố print(), ví dụ:

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

Đây là một biến thể của R-FAQ 7,22, Why do lattice/trellis graphics not work?

+0

Cảm ơn bạn rất nhiều, điều này có vẻ hoạt động như dự định! – mjlacey

+0

nếu câu trả lời này giải quyết được vấn đề của bạn, bạn được khuyến khích nhấp vào dấu kiểm để chấp nhận nó ... –

Các vấn đề liên quan