Adding points to a wireframe: 'x and units must have length >0' error
Hi David: When I try your code, I get the wireframe with the x, y, z axes sans bounding cube and points, along with the error message Error using packet 1 object 'pts' not found
sessionInfo()
R version 2.13.1 (2011-07-08) Platform: x86_64-pc-mingw32/x64 (64-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] sos_1.3-1 brew_1.0-6 lattice_0.19-33 loaded via a namespace (and not attached): [1] grid_2.13.1 tools_2.13.1 Dennis
On Mon, Oct 24, 2011 at 1:45 PM, David Winsemius <dwinsemius at comcast.net> wrote:
On Oct 24, 2011, at 4:12 PM, Megan Bartlett wrote:
Hi David, Thanks for the suggestion - I changed pts1 to pts, but I still got the same error as before. Do you know what else I'm doing wrong?
I do not. The code that works for me is:
wireframe(z ~ y*x, gridd, drape = TRUE, colorkey= TRUE,
? ? ? ? ?scales = list(arrows = FALSE),
? ? ? ? ?pts = pts1,
? ? ? ? ?panel.3d.wireframe =
? ? ? ? ?function(x, y, z,xlim, ylim, zlim, xlim.scaled, ylim.scaled,
zlim.scaled, pts1, ...)
? ? ? ? ? ? ? ? ? ?{
? ? ? ? ? ? ?panel.3dwire(x = x, y = y, z = z,
? ? ? ? ? ? ? ? ? ? ? ? ? xlim = c(-4, 0),
? ? ? ? ? ? ? ? ? ? ? ? ? ylim = c(0, 40),
? ? ? ? ? ? ? ? ? ? ? ? ? zlim = c(-160, 0),
? ? ? ? ? ? ? ? ? ? ? ? ? xlim.scaled = c(-0.5, 0.5),
? ? ? ? ? ? ? ? ? ? ? ? ? ylim.scaled = c(-0.5, 0.5),
? ? ? ? ? ? ? ? ? ? ? ? ? zlim.scaled = c(-0.5, 0.5),
? ? ? ? ? ? ? ? ? ? ? ? ? ...)
? ? ? ?xx <- xlim.scaled[1] + diff(xlim.scaled) * (pts$x - xlim[1]) /
diff(xlim)
? ? ? ?yy <- ylim.scaled[1] + diff(ylim.scaled) * (pts$y - ylim[1]) /
diff(ylim)
? ? ? ?zz <- zlim.scaled[1] + diff(zlim.scaled) * (pts$z - zlim[1]) /
diff(zlim)
? ? ? ? ? ? ?panel.3dscatter(x = xx,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?y = yy,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?z = zz,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?xlim = xlim,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?ylim = ylim,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?zlim = zlim,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?xlim.scaled = xlim.scaled,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?ylim.scaled = ylim.scaled,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?zlim.scaled = zlim.scaled,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?...)
? ? ? ? ?})
--
David.
Thanks,
Megan
PS. New code is:
wireframe(z ~ y*x, gridd, drape = TRUE, colorkey= TRUE,
? ? ? ? ? scales = list(arrows = FALSE),
? ? ? ? ? pts = pts1,
? ? ? ? ? panel.3d.wireframe =
? ? ? ? ? function(x, y, z,xlim, ylim, zlim, xlim.scaled,
ylim.scaled, zlim.scaled, pts, ...)
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? panel.3dwire(x = x, y = y, z = z,
? ? ? ? ? ? ? ? ? ? ? ? ? ?xlim = c(-4, 0),
? ? ? ? ? ? ? ? ? ? ? ? ? ?ylim = c(0, 40),
? ? ? ? ? ? ? ? ? ? ? ? ? ?zlim = c(-160, 0),
? ? ? ? ? ? ? ? ? ? ? ? ? ?xlim.scaled = c(-0.5, 0.5),
? ? ? ? ? ? ? ? ? ? ? ? ? ?ylim.scaled = c(-0.5, 0.5),
? ? ? ? ? ? ? ? ? ? ? ? ? ?zlim.scaled = c(-0.5, 0.5),
? ? ? ? ? ? ? ? ? ? ? ? ? ?...)
? ? ? ? xx <- xlim.scaled[1] + diff(xlim.scaled) * (pts$x -
xlim[1]) / diff(xlim)
? ? ? ? yy <- ylim.scaled[1] + diff(ylim.scaled) * (pts$y -
ylim[1]) / diff(ylim)
? ? ? ? zz <- zlim.scaled[1] + diff(zlim.scaled) * (pts$z -
zlim[1]) / diff(zlim)
? ? ? ? ? ? ? panel.3dscatter(x = xx,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? y = yy,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? z = zz,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? xlim = xlim,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ylim = ylim,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? zlim = zlim,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? xlim.scaled = xlim.scaled,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ylim.scaled = ylim.scaled,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? zlim.scaled = zlim.scaled,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ...)
? ? ? ? ? })
On Mon, Oct 24, 2011 at 12:04 PM, David Winsemius <dwinsemius at comcast.net
wrote:
On Oct 24, 2011, at 1:23 PM, Megan Bartlett wrote: Hi, I'm trying to follow the suggestions given by Deepayan Sarkar in this message: http://tolstoy.newcastle.edu.au/R/help/05/11/16135.html to plot 3-D points on a wireframe plot. The problem is that I keep getting a partly formed plot- with the colored lattice visible but no axis labels or additional points- with the error message "error using packet 1, 'x' and 'units' must have length >0". ?Does anyone know what I'm doing wrong? The code I've been using is: # generate some fake data data.frame(x = seq(-4, 0, 0.5), y = seq(0, 40, 5))-> df expand.grid(x = df$x, y = df$y) -> gridd (gridd$y* gridd$x) -> gridd$z data.frame(x = runif(10, -4, 0), y = runif(10, 0, 40))-> pts1 pts1$z <- pts1$x*pts1$y # plot wireframe(z ~ y*x, gridd, drape = TRUE, colorkey= TRUE, ? ? ? ? scales = list(arrows = FALSE), ? ? ? ? pts = pts1, ? ? ? ? panel.3d.wireframe = ? ? ? ? function(x, y, z,xlim, ylim, zlim, xlim.scaled, ylim.scaled, zlim.scaled, pts1, ...) ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? panel.3dwire(x = x, y = y, z = z, ? ? ? ? ? ? ? ? ? ? ? ? ?xlim = c(-4, 0), ? ? ? ? ? ? ? ? ? ? ? ? ?ylim = c(0, 40), ? ? ? ? ? ? ? ? ? ? ? ? ?zlim = c(-160, 0), ? ? ? ? ? ? ? ? ? ? ? ? ?xlim.scaled = c(-0.5, 0.5), ? ? ? ? ? ? ? ? ? ? ? ? ?ylim.scaled = c(-0.5, 0.5), ? ? ? ? ? ? ? ? ? ? ? ? ?zlim.scaled = c(-0.5, 0.5), ? ? ? ? ? ? ? ? ? ? ? ? ?...) ? ? ? xx <- xlim.scaled[1] + diff(xlim.scaled) * (pts1$x - xlim[1]) / diff(xlim) ? ? ? yy <- ylim.scaled[1] + diff(ylim.scaled) * (pts1$y - ylim[1]) / diff(ylim) ? ? ? zz <- zlim.scaled[1] + diff(zlim.scaled) * (pts1$z - zlim[1]) / diff(zlim) ? ? ? ? ? ? panel.3dscatter(x = xx, You assigned 'pts1' to 'pts', so you should have used 'pts' above: ? ? ? ? ? ? ? ? ? ? ? ? ? ? y = yy, ? ? ? ? ? ? ? ? ? ? ? ? ? ? z = zz, ? ? ? ? ? ? ? ? ? ? ? ? ? ? xlim = xlim, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ylim = ylim, ? ? ? ? ? ? ? ? ? ? ? ? ? ? zlim = zlim, ? ? ? ? ? ? ? ? ? ? ? ? ? ? xlim.scaled = xlim.scaled, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ylim.scaled = ylim.scaled, ? ? ? ? ? ? ? ? ? ? ? ? ? ? zlim.scaled = zlim.scaled, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ...) ? ? ? ? }) Thanks so much! -Megan Bartlett ? ? ? ?[[alternative HTML version deleted]]
______________________________________________ R-help at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code. David Winsemius, MD West Hartford, CT
David Winsemius, MD West Hartford, CT ? ? ? ?[[alternative HTML version deleted]]
______________________________________________ R-help at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.