2009-08-19 4 views

답변

38

는 여기에 내가 R 도움말을 사용하여 발견 한 방법이다.

make.mov <- function(){ 
    unlink("plot.mpg") 
    system("convert -delay 0.5 plot*.jpg plot.mpg") 
} 

을 또는이 article (내가 찾은이 제공 청소기 결과)에 설명 된대로는 FFmpeg 기능을 사용해보십시오 : 그때 (내가 생각 ImageMagick과의 일부, "변환"호출) 다음 함수를 호출 을 ffmpeg -r 25 -qscale 2 -i tmp/foo % 02d.jpg output.mp4

약간의 수정이 필요할 수도 있지만, 일단 모든 것이 설치되면 매우 간단 해 보입니다.

"jpg"또는 "jpeg"가 보이는 곳이라면 물론 GIF 또는 PNG로 대체하여 멋지게 꾸밀 수 있습니다.

+0

jpeg() 및 dev.off()를 루프 외부에 보관할 수도 있습니다. 예를 들어 적절한 파일 이름을 사용하는 경우 jpeg ("/ tmp/foo % 02d.png"), R은 루프 중에 새 파일을 간단하게 만듭니다. 파일 이름을 계산할 필요가 없습니다. 더 쉽게 만듭니다. –

+0

당신은 더크의 수정을하고 자신의 대답을 받아 들여야합니다. 좋은 해결책. –

+0

유용하지만 ... R에서 'make.mov'함수를 실행 한 후 .mpg 파일이 저장된 위치를 이해하기가 어렵습니다. 나는 맥 플랫폼에서 R 스튜디오 내부에서 일하고있다. – ToNoY

1

R에서 데이터 포인트가 MySQL 데이터베이스로 내보내지고 Flex/Flash 애플리케이션이 해당 데이터 포인트를 선택하고 애니메이션 시각화를 제공 한 경우 프로젝트를 한 번 수행했습니다.

+4

데이터베이스가 필요하지 않습니다. 반복하여 모든 이미지를 저장하십시오. 그런 다음 명령 줄 도구를 사용하여 함께 묶습니다. imagemagick은 하나의 가능성입니다. –

+0

네, 이것이 가장 쉬운 방법이었습니다.OS 모듈화로 인해 R이 특수 라이브러리 등으로 컴파일되지 않으면 R 내에서이를 수행 할 수 없다고 생각합니다. –

+0

이것은 영리한 기술, Srirangan입니다. 저는 수년 전에 누군가가 '불가능한'이라고 말하면 '어떻게 해야할지 모르겠다'라는 것을 알게되었습니다. 기술의 영리한 부분은 SO와 같은 포럼에서 누군가 어떻게해야하는지 알려줄 것입니다. 나는 비꼬는 사람이 아닙니다. 정말 좋은 기술이라고 생각합니다. 나는 그것을 시도 할 것입니다. Srirangan 감사합니다. – pavium

2

R 스크립트를 더 큰 Perl/Python/etc로 감싸는 경우. 스크립트를 사용하면 좋아하는 명령 줄 이미지 결합 도구와 함께 그래프를 스티치 할 수 있습니다.

래퍼 스크립트로 R 스크립트를 실행하려면 R CMD BATCH 메서드를 사용하십시오.

+1

명령 줄 도구를 사용하기 위해 다른 언어가 필요한 이유가 무엇입니까? – hadley

+1

그럼 Perl/Python 스크립트가 필요한 곳은 어디입니까? 또한 Rscript (및 littler)를 'R CMD BATCH'의 더 나은 대안으로 봅니다. –

+0

다른 언어가 필요하지 않습니다. bash와 같은 쉘을 사용할 수 있습니다. 네가 원한다면. 다양한 옵션이 있습니다. 나는 R CMD BATCH를 사용하는데, 그것은 플랫폼 전반에 보편적이거나 보편적이기 때문이다. –

14

Yihui Xie 또는 EBImage 생체 컨덕터 패키지 (? animate)로 만든 animation 패키지를 살펴보십시오.

개별 이미지 프레임을 만들려면 :

jpeg("/tmp/foo%02d.jpg") 
for (i in 1:5) { 
    my.plot(i) 
} 
dev.off() 

처음 ImageMagick를 설치, 영화를 만들려면

+0

흥미로운 점은'animation' 패키지의 문서를보고 있었는데'ImageMagick'이 설치되어 있어야한다는 것을 알았습니다. – cranberry

7

나는 이것을 caTools 라이브러리의 write.gif 함수로도 할 수 있다고 생각한다. 먼저 그래프를 멀티 프레임 이미지로 만들어야합니다. 어떻게해야할지 모르겠다. 누군가? 뷰어?

애니메이션 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) 

코드 신용 Jarek Tuszynski, 박사로 이동합니다.

+0

"마지막 줄에 오류가 발생합니다 :"write.gif (X, "" " – Nova

+1

"의 오류 : 예기치 않은 입력 위 코드의 마지막 줄에있는'Mandelbrot.gif' 주위의 인용 부호를 다음으로 변경하십시오. 정규 따옴표 (즉, 삭제하고 스크립트에 새 따옴표를 입력하십시오) – CCID

0

저는 XNview (프리웨어 그래픽 뷰어) Create Slideshow 기능을 사용하여 일부 동영상을 보았습니다. 공간 데이터를 사용하여 시간 경과에 따른 동향을 보여주고 싶었 기 때문에 순차적으로 이름 붙여진 일련의 플롯을 만들었습니다. [paste()는 모든 종류의 이름 지정 칼리스토시즘에 대한 친구입니다] 그런 다음 XNviews 슬라이드 쇼 대화 상자에로드하고 몇 가지 타이머 변수를 설정합니다. 실망. 그것을하는 방법 및 실행 가능한 그래픽을 만드는 방법을 배우기 위해 5 분이 걸렸습니다.

0

다음은 HDF5 파일에서 애니메이션 GIF "영화"를 만드는 데 대한 전체 예제입니다. 데이터는 3 차원 배열 [Nframes] [Nrows] [Ncolumns]의 HDF 데이터 집합이어야합니다.

# 
# 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) 
관련 문제