Esteemed useRs and developeRs, I need to create a '3D line plot' (proper name?) of which an excellent example can be viewed here: http://cococubed.asu.edu/images/87a/images/unknown_pleasures.jpg I have some experience using the rgl package to create 3D PCA plots, but have no idea where to start for an image like this. I'd really appreciate suggestions & help on how might achieve this using R, Karl -- Karl Brand Department of Genetics Erasmus MC Dr Molewaterplein 50 3015 GE Rotterdam T +31 (0)10 704 3457 |F +31 (0)10 704 4743 |M +31 (0)642 777 268
On 12/09/2010 10:12 AM, Karl Brand wrote:> Esteemed useRs and developeRs, > > I need to create a '3D line plot' (proper name?) of which an excellent > example can be viewed here: > > http://cococubed.asu.edu/images/87a/images/unknown_pleasures.jpg > > I have some experience using the rgl package to create 3D PCA plots, but > have no idea where to start for an image like this. > > I'd really appreciate suggestions & help on how might achieve this using R,I wouldn't use rgl for that: it's really a flat 2D plot, without perspective, shading or anything else that 3D plots have other than foreground objects hiding background ones. You can draw it by using polygon() to hide the background then lines() to draw the lines. Here's an example using regular 2d graphics: n <- 60 m <- 50 x <- seq(-4,4, len=m) # Make up some fake y data y <- matrix(NA, n, m) for (i in 1:n) y[i,] <- dnorm(x)*runif(m, 0.5,1) par(bg="black") yrange <- range(c(y, y+n/20)) plot(x, x, type="n", axes=FALSE, bg="black", ylim=yrange) for (i in n:1) { y1 <- c(y[i,] + i/20, 0, 0) x1 <- c(x, x[m], x[1]) polygon(x1,y1,col="black") lines(x, y[i,] + i/20, col="white") } The problem with this kind of plot is that it's almost impossible to display a usable vertical scale. Duncan Murdoch
On Sep 12, 2010, at 10:12 AM, Karl Brand wrote:> Esteemed useRs and developeRs, > > I need to create a '3D line plot' (proper name?) of which an > excellent example can be viewed here: > > http://cococubed.asu.edu/images/87a/images/unknown_pleasures.jpgSet up blank plot region with proper ranges for x and ylim that could be say 0:60 with the intent of scaling your 50 individual y ranges to 0-10 Scale your y values to be within 0-10 Fill plot area black: Draw "from top down" using polygon with white lines at cex=2 and black fill. Then something along these lines: for(ilevel in 0:50){ polygon(x,yscaled+50-ilevel, col="black", border="white", lwd=2)} #--- tested code---- opar <- par(bg="black") set.seed(1) Ldens <- vector(mode="list", 50) for(i in 1:50) { Ldens[[i]] <- density(rnorm(100), from=-3,to=3) with(Ldens[[i]], polygon(x=c(x[c(1, 1:512, 512)]), y= c(0, 50-i +20*y[1:512], 0), col="black", border="white")) } par(opar) #------------- Got any data? -- David.> > I have some experience using the rgl package to create 3D PCA plots, > but have no idea where to start for an image like this. > > I'd really appreciate suggestions & help on how might achieve this > using R, > > Karl > > -- > Karl Brand-- David Winsemius, MD West Hartford, CT
Hi: Another approach is to use lattice: http://lmdvr.r-forge.r-project.org/figures/figures.html Go to Chapter 14 and click on Figure 14.3; the code is on the RHS of the figure. HTH, Dennis On Sun, Sep 12, 2010 at 7:12 AM, Karl Brand <k.brand@erasmusmc.nl> wrote:> Esteemed useRs and developeRs, > > I need to create a '3D line plot' (proper name?) of which an excellent > example can be viewed here: > > http://cococubed.asu.edu/images/87a/images/unknown_pleasures.jpg > > I have some experience using the rgl package to create 3D PCA plots, but > have no idea where to start for an image like this. > > I'd really appreciate suggestions & help on how might achieve this using R, > > Karl > > -- > Karl Brand > Department of Genetics > Erasmus MC > Dr Molewaterplein 50 > 3015 GE Rotterdam > T +31 (0)10 704 3457 |F +31 (0)10 704 4743 |M +31 (0)642 777 268 > > ______________________________________________ > R-help@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. >[[alternative HTML version deleted]]
Maybe Matching Threads
- 'programatically' list or call objects for use in a function?
- attempted merge() returns: cannot coerce type 'closure' to vector of type 'any'
- venneuler() - customize a few things.
- error message when using outer function
- How does one start R within Emacs/ESS with root privileges?