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.
>>
>>
>
>
>