Buenas tardes, Podria por favor alguien ayudarme a descifrar por que no es posible ver la grafica 3D cuando se utiliza lattice? Ya se que algunas veces los duendes hacen de las suyas, pero no estoy seguro de que este sea el caso. He reiniciado R, cambiado a RStudio y utilizado XP, pero no pasa "nada". Mi sessionInfo() es: R version 2.14.0 Patched (2011-11-12 r57642) Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit) locale: [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8 attached base packages: [1] stats graphics grDevices utils datasets methods base other attached packages: [1] copula_0.9-9 pspline_1.0-14 mvtnorm_0.9-9992 [4] scatterplot3d_0.3-33 locfit_1.5-6 akima_0.5-7 [7] lattice_0.20-6 loaded via a namespace (and not attached): [1] grid_2.14.0 tools_2.14.0 Y este es el codigo que estoy usando: # mi funcion mypdf <- function(x, y){ rho <- cor(x, y) one <- 1/(sqrt(1-rho^2)) two <- exp((-1/2*(1-rho^2))*(x^2+y^2-2*rho*x*y)) three <- exp(.5*(x^2+y^2)) one*two*three } # ejemplo set.seed(123) x <- rnorm(100) y <- rnorm(100) z <- mypdf(x, y) dd <- data.frame(x = x, y = y, z = z) head(dd) # ventana grafica par(mfrow = c(1, 2), pty = ''s'') # marginales -- OK! plot(x, z, las = 1, ylab = ''f(x, y)'') plot(y, z, las = 1, ylab = ''f(x, y)'') # con lattice -- no veo nada! require(lattice) # no plot wireframe(z ~ x*y, data = dd, scales = list(arrows = FALSE), drape = TRUE, colorkey = TRUE, col = 1, zlim = c(0.9, 1.2)) # con scatterplot3d -- si aparece! require(scatterplot3d) # plot par(mfrow = c(1,1), pty = ''s'') scatterplot3d(x, y, z, highlight.3d=TRUE, col.axis=1, col.grid=1,pch=20) # otro ejemplo con lattice -- si funciona! wireframe(volcano, shade = TRUE, aspect = c(61/87, 0.4), light.source = c(10,0,10)) Muchas gracias, Jorge.- [[alternative HTML version deleted]]
Hola Jorge, Sí, la clave está en esta frase de la ayuda de wireframe sobre la fórmula: ".. *In the case of wireframe, calculations are based on the assumption that the x and y values are evaluated on a rectangular grid defined by their unique values. The grid points need not be equally spaced.* ..." En tu caso, los valores aleatorios no representan un "rectangular grid" y no son "unique values"... Probando de esta otra manera, sí que se obtiene un gráfico. ###### gg<-expand.grid(x=1:10, y=1:10) rho <- cor(gg$x, gg$y) one <- 1/(sqrt(1-rho^2)) two <- exp((-1/2*(1-rho^2))*(gg$x^2+gg$y^2-2*rho*gg$x*gg$y)) three <- exp(.5*(gg$x^2+gg$y^2)) gg$z<-one*two*three wireframe(z ~ x * y, data = gg, scales = list(arrows = FALSE), drape = TRUE, colorkey = TRUE, screen = list(z = 30, x = -60)) ####### Saludos, Carlos Ortega www.qualityexcellence.es El 28 de marzo de 2012 20:59, Jorge I Velez <jorgeivanvelez@gmail.com>escribió:> Buenas tardes, > > Podria por favor alguien ayudarme a descifrar por que no es posible ver la > grafica 3D cuando se utiliza lattice? Ya se que algunas veces los duendes > hacen de las suyas, pero no estoy seguro de que este sea el caso. He > reiniciado R, cambiado a RStudio y utilizado XP, pero no pasa "nada". > > Mi sessionInfo() es: > > R version 2.14.0 Patched (2011-11-12 r57642) > Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit) > > locale: > [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8 > > attached base packages: > [1] stats graphics grDevices utils datasets methods base > > other attached packages: > [1] copula_0.9-9 pspline_1.0-14 mvtnorm_0.9-9992 > [4] scatterplot3d_0.3-33 locfit_1.5-6 akima_0.5-7 > [7] lattice_0.20-6 > > loaded via a namespace (and not attached): > [1] grid_2.14.0 tools_2.14.0 > > > Y este es el codigo que estoy usando: > > # mi funcion > mypdf <- function(x, y){ > rho <- cor(x, y) > one <- 1/(sqrt(1-rho^2)) > two <- exp((-1/2*(1-rho^2))*(x^2+y^2-2*rho*x*y)) > three <- exp(.5*(x^2+y^2)) > one*two*three > } > > # ejemplo > set.seed(123) > x <- rnorm(100) > y <- rnorm(100) > z <- mypdf(x, y) > dd <- data.frame(x = x, y = y, z = z) > head(dd) > > # ventana grafica > par(mfrow = c(1, 2), pty = ''s'') > > # marginales -- OK! > plot(x, z, las = 1, ylab = ''f(x, y)'') > plot(y, z, las = 1, ylab = ''f(x, y)'') > > # con lattice -- no veo nada! > require(lattice) # no plot > wireframe(z ~ x*y, data = dd, scales = list(arrows = FALSE), > drape = TRUE, colorkey = TRUE, col = 1, zlim = c(0.9, 1.2)) > > # con scatterplot3d -- si aparece! > require(scatterplot3d) # plot > par(mfrow = c(1,1), pty = ''s'') > scatterplot3d(x, y, z, highlight.3d=TRUE, col.axis=1, > col.grid=1,pch=20) > > # otro ejemplo con lattice -- si funciona! > wireframe(volcano, shade = TRUE, > aspect = c(61/87, 0.4), light.source = c(10,0,10)) > > > Muchas gracias, > Jorge.- > > [[alternative HTML version deleted]] > > _______________________________________________ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es >-- Saludos, Carlos Ortega www.qualityexcellence.es [[alternative HTML version deleted]]
Gracias Carlos ;-) Jorge.-** On Wed, Mar 28, 2012 at 3:30 PM, Carlos Ortega <cof@qualityexcellence.es>wrote:> Hola Jorge, > > Sí, la clave está en esta frase de la ayuda de wireframe sobre la fórmula: > ".. > *In the case of wireframe, calculations are based on the assumption that > the x and y values are evaluated on a rectangular grid defined by their > unique values. The grid points need not be equally spaced.* > ..." > > En tu caso, los valores aleatorios no representan un "rectangular grid" y > no son "unique values"... > > Probando de esta otra manera, sí que se obtiene un gráfico. > > > ###### > gg<-expand.grid(x=1:10, y=1:10) > > rho <- cor(gg$x, gg$y) > one <- 1/(sqrt(1-rho^2)) > two <- exp((-1/2*(1-rho^2))*(gg$x^2+gg$y^2-2*rho*gg$x*gg$y)) > three <- exp(.5*(gg$x^2+gg$y^2)) > > gg$z<-one*two*three > > wireframe(z ~ x * y, data = gg, > scales = list(arrows = FALSE), > drape = TRUE, colorkey = TRUE, > screen = list(z = 30, x = -60)) > > ####### > > Saludos, > Carlos Ortega > www.qualityexcellence.es > > El 28 de marzo de 2012 20:59, Jorge I Velez <jorgeivanvelez@gmail.com>escribió: > >> Buenas tardes, >> >> Podria por favor alguien ayudarme a descifrar por que no es posible ver la >> grafica 3D cuando se utiliza lattice? Ya se que algunas veces los duendes >> hacen de las suyas, pero no estoy seguro de que este sea el caso. He >> reiniciado R, cambiado a RStudio y utilizado XP, pero no pasa "nada". >> >> Mi sessionInfo() es: >> >> R version 2.14.0 Patched (2011-11-12 r57642) >> Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit) >> >> locale: >> [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8 >> >> attached base packages: >> [1] stats graphics grDevices utils datasets methods base >> >> other attached packages: >> [1] copula_0.9-9 pspline_1.0-14 mvtnorm_0.9-9992 >> [4] scatterplot3d_0.3-33 locfit_1.5-6 akima_0.5-7 >> [7] lattice_0.20-6 >> >> loaded via a namespace (and not attached): >> [1] grid_2.14.0 tools_2.14.0 >> >> >> Y este es el codigo que estoy usando: >> >> # mi funcion >> mypdf <- function(x, y){ >> rho <- cor(x, y) >> one <- 1/(sqrt(1-rho^2)) >> two <- exp((-1/2*(1-rho^2))*(x^2+y^2-2*rho*x*y)) >> three <- exp(.5*(x^2+y^2)) >> one*two*three >> } >> >> # ejemplo >> set.seed(123) >> x <- rnorm(100) >> y <- rnorm(100) >> z <- mypdf(x, y) >> dd <- data.frame(x = x, y = y, z = z) >> head(dd) >> >> # ventana grafica >> par(mfrow = c(1, 2), pty = ''s'') >> >> # marginales -- OK! >> plot(x, z, las = 1, ylab = ''f(x, y)'') >> plot(y, z, las = 1, ylab = ''f(x, y)'') >> >> # con lattice -- no veo nada! >> require(lattice) # no plot >> wireframe(z ~ x*y, data = dd, scales = list(arrows = FALSE), >> drape = TRUE, colorkey = TRUE, col = 1, zlim = c(0.9, 1.2)) >> >> # con scatterplot3d -- si aparece! >> require(scatterplot3d) # plot >> par(mfrow = c(1,1), pty = ''s'') >> scatterplot3d(x, y, z, highlight.3d=TRUE, col.axis=1, >> col.grid=1,pch=20) >> >> # otro ejemplo con lattice -- si funciona! >> wireframe(volcano, shade = TRUE, >> aspect = c(61/87, 0.4), light.source = c(10,0,10)) >> >> >> Muchas gracias, >> Jorge.- >> >> [[alternative HTML version deleted]] >> >> _______________________________________________ >> R-help-es mailing list >> R-help-es@r-project.org >> https://stat.ethz.ch/mailman/listinfo/r-help-es >> > > > > -- > Saludos, > Carlos Ortega > www.qualityexcellence.es >[[alternative HTML version deleted]]
Estimado Jorge Miro este ejemplo, que funciona, pero me intriga su problema que no puede resolver: wireframe(volcano, shade = TRUE, aspect = c(61/87, 0.4), light.source = c(10,0,10)) g <- expand.grid(x = 1:10, y = 5:15, gr = 1:2) g$z <- log((g$x^g$g + g$y^2) * g$gr) wireframe(z ~ x * y, data = g, groups = gr, scales = list(arrows = FALSE), drape = TRUE, colorkey = TRUE, screen = list(z = 30, x = -60)) Pero veo dos cosas diferentes que honestamente no las se, el expand.grid y el groups Javier Marcuzzi -----Mensaje original----- From: Jorge I Velez Sent: Wednesday, March 28, 2012 3:59 PM To: R-help-es Subject: [R-es] Grafico en 3D Buenas tardes, Podria por favor alguien ayudarme a descifrar por que no es posible ver la grafica 3D cuando se utiliza lattice? Ya se que algunas veces los duendes hacen de las suyas, pero no estoy seguro de que este sea el caso. He reiniciado R, cambiado a RStudio y utilizado XP, pero no pasa "nada". Mi sessionInfo() es: R version 2.14.0 Patched (2011-11-12 r57642) Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit) locale: [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8 attached base packages: [1] stats graphics grDevices utils datasets methods base other attached packages: [1] copula_0.9-9 pspline_1.0-14 mvtnorm_0.9-9992 [4] scatterplot3d_0.3-33 locfit_1.5-6 akima_0.5-7 [7] lattice_0.20-6 loaded via a namespace (and not attached): [1] grid_2.14.0 tools_2.14.0 Y este es el codigo que estoy usando: # mi funcion mypdf <- function(x, y){ rho <- cor(x, y) one <- 1/(sqrt(1-rho^2)) two <- exp((-1/2*(1-rho^2))*(x^2+y^2-2*rho*x*y)) three <- exp(.5*(x^2+y^2)) one*two*three } # ejemplo set.seed(123) x <- rnorm(100) y <- rnorm(100) z <- mypdf(x, y) dd <- data.frame(x = x, y = y, z = z) head(dd) # ventana grafica par(mfrow = c(1, 2), pty = 's') # marginales -- OK! plot(x, z, las = 1, ylab = 'f(x, y)') plot(y, z, las = 1, ylab = 'f(x, y)') # con lattice -- no veo nada! require(lattice) # no plot wireframe(z ~ x*y, data = dd, scales = list(arrows = FALSE), drape = TRUE, colorkey = TRUE, col = 1, zlim = c(0.9, 1.2)) # con scatterplot3d -- si aparece! require(scatterplot3d) # plot par(mfrow = c(1,1), pty = 's') scatterplot3d(x, y, z, highlight.3d=TRUE, col.axis=1, col.grid=1,pch=20) # otro ejemplo con lattice -- si funciona! wireframe(volcano, shade = TRUE, aspect = c(61/87, 0.4), light.source = c(10,0,10)) Muchas gracias, Jorge.- [[alternative HTML version deleted]] _______________________________________________ R-help-es mailing list R-help-es en r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
Apreciado Javier, La razon del por que no funciona fue ya expuesta por Carlos Ortega -- debo confesar que se me paso por alto :( -- y tiene que ver con que los valores de x e y deben estar organizados en una rejilla para que la funcion wireframe funcione de manera apropiada. En mi caso, esa rejilla no existia y por ello no pude ver nada. En cuanto al ejemplo que mencionas, esto es lo que pasa: 1. El expand.grid() permite obtener todas las combinaciones entre grupos de variables. Por ejemplo si tienes x <- y <- 10 y haces expand.grid(x, y) obtendras 100 posibles combinaciones, e.g., 1, 1; 1, 2; 1, 3; ..., 10, 10. 2. La variable "groups" es importante cuando es necesario hacer graficas 3D de 2 o mas grupos en los que se tienen las variables x e y. Especificamente, en ese ejemplo hay dos grupos y se intenta graficar las superficies z = f(x,y) correspondientes a cada uno sobre los mismos ejes. Tambien es podria hacerse en ejes separados, pero en ese caso se utilizaria algo parecido a wireframe(z ~ x*y | group, data = d, ...) Muchas gracias por tu interes y de nuevo gracias a Carlos por ayudarme a ver la luz. Llevaba varios minutos en esto. Un saludo, Jorge.- 2012/3/28 Marcuzzi, Javier Rubén <>> Estimado Jorge > > Miro este ejemplo, que funciona, pero me intriga su problema que no puede > resolver: > > > wireframe(volcano, shade = TRUE, > aspect = c(61/87, 0.4), > light.source = c(10,0,10)) > > g <- expand.grid(x = 1:10, y = 5:15, gr = 1:2) > g$z <- log((g$x^g$g + g$y^2) * g$gr) > wireframe(z ~ x * y, data = g, groups = gr, > > scales = list(arrows = FALSE), > drape = TRUE, colorkey = TRUE, > screen = list(z = 30, x = -60)) > > Pero veo dos cosas diferentes que honestamente no las se, el expand.grid y > el groups > > Javier Marcuzzi > > -----Mensaje original----- From: Jorge I Velez > Sent: Wednesday, March 28, 2012 3:59 PM > To: R-help-es > Subject: [R-es] Grafico en 3D > > > Buenas tardes, > > Podria por favor alguien ayudarme a descifrar por que no es posible ver la > grafica 3D cuando se utiliza lattice? Ya se que algunas veces los duendes > hacen de las suyas, pero no estoy seguro de que este sea el caso. He > reiniciado R, cambiado a RStudio y utilizado XP, pero no pasa "nada". > > Mi sessionInfo() es: > > R version 2.14.0 Patched (2011-11-12 r57642) > Platform: x86_64-apple-darwin9.8.0/x86_**64 (64-bit) > > locale: > [1] en_US.UTF-8/en_US.UTF-8/en_US.**UTF-8/C/en_US.UTF-8/en_US.UTF-**8 > > attached base packages: > [1] stats graphics grDevices utils datasets methods base > > other attached packages: > [1] copula_0.9-9 pspline_1.0-14 mvtnorm_0.9-9992 > [4] scatterplot3d_0.3-33 locfit_1.5-6 akima_0.5-7 > [7] lattice_0.20-6 > > loaded via a namespace (and not attached): > [1] grid_2.14.0 tools_2.14.0 > > > Y este es el codigo que estoy usando: > > # mi funcion > mypdf <- function(x, y){ > rho <- cor(x, y) > one <- 1/(sqrt(1-rho^2)) > two <- exp((-1/2*(1-rho^2))*(x^2+y^2-**2*rho*x*y)) > three <- exp(.5*(x^2+y^2)) > one*two*three > } > > # ejemplo > set.seed(123) > x <- rnorm(100) > y <- rnorm(100) > z <- mypdf(x, y) > dd <- data.frame(x = x, y = y, z = z) > head(dd) > > # ventana grafica > par(mfrow = c(1, 2), pty = ''s'') > > # marginales -- OK! > plot(x, z, las = 1, ylab = ''f(x, y)'') > plot(y, z, las = 1, ylab = ''f(x, y)'') > > # con lattice -- no veo nada! > require(lattice) # no plot > wireframe(z ~ x*y, data = dd, scales = list(arrows = FALSE), > drape = TRUE, colorkey = TRUE, col = 1, zlim = c(0.9, 1.2)) > > # con scatterplot3d -- si aparece! > require(scatterplot3d) # plot > par(mfrow = c(1,1), pty = ''s'') > scatterplot3d(x, y, z, highlight.3d=TRUE, col.axis=1, > col.grid=1,pch=20) > > # otro ejemplo con lattice -- si funciona! > wireframe(volcano, shade = TRUE, > aspect = c(61/87, 0.4), light.source = c(10,0,10)) > > > Muchas gracias, > Jorge.- > > [[alternative HTML version deleted]] > > ______________________________**_________________ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/**listinfo/r-help-es<https://stat.ethz.ch/mailman/listinfo/r-help-es> >[[alternative HTML version deleted]]