Comment préserver l'échelle du tracé de dispersion des nuages ​​de réseau tourné?

StackOverflow https://stackoverflow.com/questions/5397670

  •  28-10-2019
  •  | 
  •  

Question

Contexte: J'essaie d'animer un tracé de diffusion 3D rotatif à l'aide de la fonction Lattice :: Cloud (). Je crée une séquence d'images PNG dans R, puis crée un GIF animé à partir de la séquence.

Le problème est que l'échelle de l'intrigue change avec la rotation de sorte que le cube animé semble se développer et rétrécir en se tournant.

Voici un exemple utilisant seulement deux parcelles (basée sur l'un des exemples de nuages):

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))

J'aimerais que l'intrigue droite apparaisse de la même taille que l'intrigue de gauche. Dans cet exemple, c'est un peu plus petit. Je n'ai pas à utiliser R ou Lattice :: Cloud () mais c'est très proche de ce que je veux ...

Essayant RGL, il semble que ma copie de RGL soit incompatible avec ma version de R. Je vais mettre à niveau R quand j'aurai une minute:

> 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

J'ai mis à jour vers R 2.12.2 et maintenant cela fonctionne (en utilisant GraphicsMagick au lieu d'imageMagick):

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')
Était-ce utile?

La solution

Essayez le package RGL, c'est ainsi que j'ai approché la même phénomène

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 )

Mes informations de session pour un exemple de travail confirmé.

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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top