Assign palette (e.g. rainbow) to a series of points on 1 plot
It was arbitrary data and I made a mistake. Thanks for your help nonetheless. I solved the problem using matpoints, which does the job quite nicely:
lx100=c(1,1,1,.8,.5,.4,.2,0)
day100=c(0,1,2,3,4,5,6,7)
lx90=c(1,1,1,1,.9,.8,.6,.4,.2,.1,0)
day90=c(0,1,2,3,4,5,6,7,8,9,10)
lx0=c(1,1,1,1,1,1,.9,.9,.8,.8,.6,.5,.4,.3,.2,.1,.1,0)
day0=c(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17)
lx = cbindX(data.frame("100%"=lx100),data.frame("90%"=lx90),data.frame("0%"=lx0))
day = cbindX(data.frame("100%"=day100),data.frame("90%"=day90),data.frame("0%"=day0))
plot(x=dayC,y=lxC, type="n", xlab="Day of adult life",ylab=lx,lwd=2.2,main=met,ylim=c(0.0,1))
matpoints(days,lx, col=heat.colors(3),lty=1,lwd=2,pch=16, type="b")
On Nov 30, 10:27?am, Phil Spector <spec... at stat.berkeley.edu> wrote:
One of the reasons we ask for a *reproducible* example, is that
it allows us to test our ideas and make sure that all the details
are taken care of. ?Here's a reproducible example that may help
solve your problem:
lx100=c(1,1,1,.8,.5,.4,.2,0)
day100=c(0,1,2,3,4,5,6,7)
lx90=c(1,1,1,1,.9,.8,.6,.4,.2,.1,0)
day90=c(0,1,2,3,4,5,6,7,8,9,10)
lx0=c(1,1,1,1,1,1,.9,.9,.8,.8,.6,.5,.4,.3,.2,.1,.1,0)
day0=c(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17)
lx = list(lx0=lx0,lx90=lx90,lx100=lx100)
day = list(day0=day0,day90=day90,day100=day100)
plot(range(unlist(day)),range(unlist(lx)), type="n", xlab="Day of adult life",ylab='lx',lwd=2.2)
mapply(function(x,y,col)points(x,y,type='b',col=col),day,lx,rainbow(length( lx)))
legend('topright',names(lx),pch=1,lty=1,col=rainbow(length(lx)))
title('Survival vs. Time')
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? - Phil Spector
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Statistical Computing Facility
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Department of Statistics
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?UC Berkeley
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?spec... at stat.berkeley.edu
On Sun, 29 Nov 2009, Frostygoat wrote:
I have 11 vectors representing insect survival probabilities in response to different levels of toxins at 10 concentrations
lx100=c(1,1,1,.8,.5,.4,.2,0) day100=c(0,1,2,3,4,5,6,7,8)
lx90=c(1,1,1,1,.9,.8,.6,.4,.2,.1,0) day90=c(0,1,2,3,4,5,6,7,8,9,10)
#...and so on10% and a zero (control) series
lx0=c(1,1,1,1,1,1,.9,.9,.8,.8,.6,.5,.4,.3,.2,.1,.1,0) day0=c(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17)
I want to plot them on one plot with a palette color scheme such as rainbow or topo.colors, and I want one color per concentration on both the point and line. ?I have found a number of ways to plot them:
1. Plot a blank frame big enough to accommodate the control data and then add the x,y coords using points.
plot(x=day0,y=lx0, type="n", xlab="Day of adult life",ylab=lx,lwd=2.2,ylim=c(0.0,1),col=cols) points(x=day100,y=lx100,type="b",col="#FF8B00") points(x=day90,y=lx90,type="b",col= "#E8FF00") ...
This is harder than it should be, I tracked down the color names generated with rainbow(11) and individually name each points command.
2. ?Bind the respective x and y coords into 2 respective matrices and plot.
lxs=matrix(c(lx100,lx90,lx80,lx70,lx60...)) days=matrix(c(day100,day90,day80,day70,day60...))
plot(x=days,y=lxs, col=rainbow(11), type="b")
The points rainbow (not as series) and the lines are red.
I tried various methods of binding data and plotting data frames without success.
I would appreciate it if someone would kindly put me on the trail. Thank you for your time.
______________________________________________ R-h... at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guidehttp://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.
______________________________________________ R-h... at r-project.org mailing listhttps://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guidehttp://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.