Hello, I have a data frame with 3 vectors $x, $y, and $type. I would like to plot $x~$y and having different colors for the corresponding points, one for each level of $type. Would someone know how to do that? Is it possible to then generate a legend automatically? Valentin
One option is use lattice: require(lattice) xyplot(x~y, data=your.data, group=type, auto.key=T) On 25/02/2008, Valentin Bellassen <vbella at lsce.ipsl.fr> wrote:> Hello, > > I have a data frame with 3 vectors $x, $y, and $type. I would like to > plot $x~$y and having different colors for the corresponding points, one > for each level of $type. Would someone know how to do that? Is it > possible to then generate a legend automatically? > > Valentin > > ______________________________________________ > 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. >-- Henrique Dallazuanna Curitiba-Paran?-Brasil 25? 25' 40" S 49? 16' 22" O
Valentin Bellassen <vbella <at> lsce.ipsl.fr> writes:> > Hello, > > I have a data frame with 3 vectors $x, $y, and $type. I would like to > plot $x~$y and having different colors for the corresponding points, one > for each level of $type. Would someone know how to do that? Is it > possible to then generate a legend automatically? > > ValentinIf you want an automatic legend then lattice or ggplot2 are the ways to go (maybe xYplot in the Hmisc package too, but I don't know it well enough to give an example). x = runif(300) f = factor(rep(1:3,each=100)) y = rnorm(x)+c(1,5,10)[f] ## base plot(x,y,col=as.numeric(f)) legend("bottomleft",levels(f),col=1:3,pch=1) ## lattice library(lattice) xyplot(y~x,groups=f,auto.key=TRUE) ## ggplot2 library(ggplot2) qplot(x,y,colour=f)
>>>>> "Valentin" == Valentin Bellassen <vbella at lsce.ipsl.fr> writes:> Hello, I have a data frame with 3 vectors $x, $y, and > $type. I would like to plot $x~$y and having different > colors for the corresponding points, one for each level of > $type. Would someone know how to do that? Is it possible to > then generate a legend automatically? If type is a factor, you can use it as.numeric: plot(x ~ y, data, col=as.numeric(type)) legend(..., col=as.numeric(data$type)) Mike
Thanks, it works fine except that 7 colors are repeated twice (so that one color corresponds to two types). I tried the following but it makes things worse: the legend disappears and I get only 4 different colors: pan<-function(x,y) { panel.superpose(x,y,subscripts=coef$country,groups=coef$country, col=1:14)} xyplot(coef$a~coef$b,group=coef$country,auto.key=T, panel="pan", xlim=c(-b_max,b_max),ylim=c(-a_max,a_max),xlab="intercept",ylab="slope") Any idea? In any case, thanks for the previous answer. Valentin Henrique Dallazuanna a ?crit :> One option is use lattice: > > require(lattice) > xyplot(x~y, data=your.data, group=type, auto.key=T) > > On 25/02/2008, Valentin Bellassen <vbella at lsce.ipsl.fr> wrote: > >> Hello, >> >> I have a data frame with 3 vectors $x, $y, and $type. I would like to >> plot $x~$y and having different colors for the corresponding points, one >> for each level of $type. Would someone know how to do that? Is it >> possible to then generate a legend automatically? >> >> Valentin >> >> ______________________________________________ >> 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. >> >> > > >