2011-03-22 25 views
5

Arka plan: Ben R'ın kafesi :: bulut() işlevini kullanarak bir döner 3D dağılım arsa animasyon çalışıyorum. R'de bir dizi PNG görüntüsü oluşturup, sekanstan animasyonlu bir GIF oluşturuyorum.Döndürülmüş kafes bulut dağılım grafiği ölçeği nasıl korunur?

sorun animasyonlu küp büyümek ve Döner gibi küçülmeye görünecek şekilde arsa ölçeği dönüşü ile değişmesidir. Önce sol taraftaki arsa aynı boyutta görünmesini sağ arsa istiyorum

library(lattice) 
par.set <- 
    list(axis.line = list(col = "transparent"), 
    clip = list(panel = "off")) 

print(cloud(Sepal.Length ~ Petal.Length * Petal.Width, 
    data = iris, cex = .8, 
    groups = Species, 
    screen = list(z = 0, x = 0, y = 0), 
    par.settings = par.set, 
    scales = list(col = "black")), 
    split = c(1,1,2,1), more = TRUE) 
print(cloud(Sepal.Length ~ Petal.Length * Petal.Width, 
    data = iris, cex = .8, 
    groups = Species, 
    screen = list(z = 0, x = 0, y = 30), 
    par.settings = par.set, 
    scales = list(col = "black")), 
    split = c(2,1,2,1)) 

:

İşte (bulut örneklerinden biri dayanarak) sadece iki araziler kullanarak bir örnektir. Bu örnekte oldukça küçüktür. R veya lattice :: cloud() kullanmak zorunda değilim ama ne istediğime çok yakın ...

Rgl denemek, belki de rgl kopyasım benim R sürümüyle uyumlu değil gibi görünüyor.

> library(rgl) 
> df <- data.frame(x=runif(10,0,1), y=runif(10,0,1), z=runif(10,0,1), color=round(runif(10,1,3))) 
> plot3d(df$x, df$y, df$z, col=df$color, size=2, type='s') 
> rgl.snapshot("C:\\pic.png", fmt="png", top=TRUE) 
[1] "failed" 
Warning messages: 
1: In rgl.snapshot("C:\\pic.png", fmt = "png", top = TRUE) : 
    RGL: PNG Pixmap Saver Warning: Application was compiled with png.h from libpng-1.2.40 
2: In rgl.snapshot("C:\\pic.png", fmt = "png", top = TRUE) : 
    RGL: PNG Pixmap Saver Warning: Application is running with png.c from libpng-1.4.1 
3: In rgl.snapshot("C:\\pic.png", fmt = "png", top = TRUE) : 
    RGL: PNG Pixmap Saver Warning: Incompatible libpng version in application and library 

> sessionInfo() 
R version 2.11.1 (2010-05-31) 
i386-pc-mingw32 

locale: 
[1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United States.1252 LC_MONETARY=English_United States.1252 
[4] LC_NUMERIC=C       LC_TIME=English_United States.1252  

attached base packages: 
[1] stats  graphics grDevices utils  datasets methods base  

other attached packages: 
[1] rgl_0.92.798 

loaded via a namespace (and not attached): 
[1] tools_2.11.1 

Ben R 2.12.2 güncellendi ve şimdi bu (yerine ImageMagick'in GraphicsMagick kullanarak) çalışır:

open3d() 
with(iris, plot3d(Petal.Length, Petal.Width, Sepal.Length, col=Species)) 
movie3d(spin3d(), duration=12, dir="C:\\Movie", convert=FALSE) 
system('"C:\\program files\\graphicsmagick-1.3.7-q8\\gm.exe" convert -delay 12 C:\\Movie\\movie*.png C:\\Movie\\animate.gif') 

cevap

3

rgl paketini deneyin, bu bir dakika varken R yükseltme edeceğiz aynı phenomea yaklaştı nasıl

Bir teyit çalışma örneğin
require ("rgl") 

df <- data.frame(x=runif(10,0,1), y=runif(10,0,1), z=runif(10,0,1), color=round(runif(10,1,3))) 

plot3d(df$x, df$y, df$z, col=df$color, size=2, type='s') 

?movie3d() 

demo(flag) 

test <- spin3d(rpm=6,axis=c(0,0,1)) 
?spin3d 

open3d() 
plot3d(oh3d(col="lightblue", alpha=0.5)) 
play3d(spin3d(axis=c(0,0,1), rpm=20), duration=3) 


open3d() 
plot3d(cube3d(col="green")) 
M <- par3d("userMatrix") 
play3d(par3dinterp(userMatrix=list(M, 
           rotate3d(M, pi/2, 1, 0, 0), 
           rotate3d(M, pi/2, 0, 1, 0))), 
    duration=4) 

movie3d(spin3d(), duration=5) 

Benim Oturum bilgileri.

R version 2.12.2 (2011-02-25) 
Platform: i386-pc-mingw32/i386 (32-bit) 

locale: 
[1] LC_COLLATE=English_United States.1252 
[2] LC_CTYPE=English_United States.1252 
[3] LC_MONETARY=English_United States.1252 
[4] LC_NUMERIC=C       
[5] LC_TIME=English_United States.1252  

attached base packages: 
[1] stats  graphics grDevices utils  datasets methods base  

other attached packages: 
[1] rgl_0.92.798 

loaded via a namespace (and not attached): 
[1] tools_2.12.2 
+0

@OneWhoIsUnnamed Bu umut verici görünüyor ancak bazı nedenlerle movie3d() çıktı dosyalarını oluşturamıyor. Her kare için boş png dosyaları oluşturur ve 'Yazma movie115.png [1] "başarısız oldu" gibi bir hata kaydeder. –

+0

Ayrıca plot3d(), görünüm olarak bulut() ile aynı düzeyde kontrole sahip görünmüyor. Varsayılan pencere boyutunu ve eksen etiketlerinin boyutunu nasıl değiştirebilirim? Teşekkürler! –

+0

@Kent Johnson ben movie3d() benim makinede hatasız size, yukarıdaki işleri için başarısız neden emin değilim, ama ancak Açıklayıcı bir örnek aradığını tam olarak budur verdi. Sorun gidermek için lütfen sessionInfo() çıktısı gönderebilir misiniz? Belki bu bir R sürümü sorunudur. Ayrıca bu hatayı almak için kullandığınız minimal bir komut örneği göndermek mümkün mü? Bu hatayı çoğaltmaya çalışmak benim için yararlı olur. –

İlgili konular