[R] legend at fixed distance form the bottom

Greg Snow Greg.Snow at imail.org
Mon Dec 8 19:53:46 CET 2008


Try this:

symboles <- c(3,4,5,6)
dn <- rbind(matrix(rnorm(20),5))
layout(matrix(c(1,1,1,2,2,3),3))


for(i in 1:3){
  matplot(dn,type="b",xlab="",pch=symboles)
  legend(grconvertX(0.5,'nfc'), grconvertY(0,'nfc'),
        xjust=0.5, yjust=0,
        pch = unique(symboles),
        legend = c("a","b","c","d"),
        horiz = TRUE, xpd = NA)
}


Does that do what you want?  Or at least get you started in the correct direction?

--
Gregory (Greg) L. Snow Ph.D.
Statistical Data Center
Intermountain Healthcare
greg.snow at imail.org
801.408.8111


> -----Original Message-----
> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-
> project.org] On Behalf Of Christophe Genolini
> Sent: Monday, December 08, 2008 11:28 AM
> To: Greg Snow
> Cc: r-help at r-project.org
> Subject: Re: [R] legend at fixed distance form the bottom
>
> Sorry, I will be more precise. Here is an example (simplified) of graph
> I want :
>
> ---- 8< ----
>
> symboles <- c(3,4,5,6)
> dn <- rbind(matrix(rnorm(20),5))
> layout(matrix(c(1,1,1,2,2,3),3))
>
> for(i in 1:3)
>   matplot(dn,type="b",xlab="+: a  x: b  ???: c  ???: d",pch=symboles)
> ---- 8< ----
>
> But instead of ???, I want the "triangle" and the "losange".
> So I try to use legend in order to get the losange and triangle :
>
> --- 8< ----
>
> for(i in 1:3){
>   matplot(dn,type="b",xlab="",pch=symboles)
>   legend("top", pch = unique(listSymboles),
>         legend = c("a","b","c","d"),
>         inset = c(0,1.1), horiz = TRUE, xpd = NA)
> }
>
> --- 8< ----
>
> On the first plot, the legend is down, on the second, the legend is on
> a
> correct position, on the third one, the legend in *on* the graduation.
> So my problem is to plot either a legend at a fixed distance from the
> graph or to put some symbol ("triangle", "losange" and all the other
> since I might have more than 4 curves) in the xlab.
>
> Any solution ?
>
> Thanks
>
> Christophe
>
>
>
>
>
> > I suggested the use of grconvertY if you want to place something
> exactly n inches from the bottom, then grconvertY will give the user
> (or other) coordinates that match, or if you want to place something
> exactly 10% of the total device height from the bottom, etc.
> >
> > What to do in replotting a graph afte a resize is usually tricky and
> requires information that the program does not have and therefore has
> to guess at, that is why it is safest to not depend on the computer
> doing the correct thing in a resize and just tell the users to
> resize/set size before calling your function.
> >
> > If you give a bit more detail on what you are trying to accomplish
> and what you mean by fixed distance (number of inches, proportion of
> device height, margin row, etc.) we may be better able to help.
> >
> > --
> > Gregory (Greg) L. Snow Ph.D.
> > Statistical Data Center
> > Intermountain Healthcare
> > greg.snow at imail.org
> > 801.408.8111
> >
> >
> >
> >> -----Original Message-----
> >> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-
> >> project.org] On Behalf Of Christophe Genolini
> >> Sent: Saturday, December 06, 2008 7:08 AM
> >> To: Greg Snow
> >> Cc: r-help at r-project.org
> >> Subject: Re: [R] legend at fixed distance form the bottom
> >>
> >> Thanks for your answer.
> >>
> >> Unfortunatly, I can not create the graphice with the final size
> since I
> >> am writing a package in wich the user will have to chose between
> >> several
> >> graphics, and then he will have to export one. And they might be one
> >> graph, or 2x2, or 3x3...
> >>
> >> I check the grconvertY but I did not understand what you suggest. To
> >> me,
> >> the use of legend can not work since every length in the legend box
> >> (xlength, ylength, distance to axes) will change when resizing the
> >> graph. I was more expecting something like introduce the symbols
> used
> >> in
> >> the graph *in* the xlab. Is it possible ?
> >>
> >> Christophe
> >>
> >>
> >>> It is best to create the graphics device at the final size desired,
> >>>
> >> then do the plotting and add the legend.  For getting a fixed
> distance,
> >> look at the function grconvertY for one possibility.
> >>
> >>> --
> >>> Gregory (Greg) L. Snow Ph.D.
> >>> Statistical Data Center
> >>> Intermountain Healthcare
> >>> greg.snow at imail.org
> >>> 801.408.8111
> >>>
> >>>
> >>>
> >>>
> >>>> -----Original Message-----
> >>>> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-
> >>>> project.org] On Behalf Of Christophe Genolini
> >>>> Sent: Friday, December 05, 2008 6:40 AM
> >>>> To: r-help at r-project.org
> >>>> Subject: [R] legend at fixed distance form the bottom
> >>>>
> >>>> Hi the list
> >>>>
> >>>> I would like to add a legend under a graph but at a fixed distance
> >>>>
> >> from
> >>
> >>>> the graphe. Is it possible ?
> >>>> More precisely, here is my code :
> >>>>
> >>>> --- 8< ----
> >>>> symboles <- c(3,4,5,6)
> >>>> dn <- rbind(matrix(rnorm(20),,5),matrix(rnorm(20,2),,5))
> >>>> listSymboles <- rep(symboles,each=2)
> >>>> matplot(t(dn),pch=listSymboles,type="b")
> >>>> legend("bottom", pch = unique(listSymboles), legend = c("ane",
> >>>> "cheval",
> >>>> "poney", "mule"), inset = c(0,-0.175), horiz = TRUE, xpd = NA)
> >>>> --- 8< ----
> >>>>
> >>>> But when I change the size of the graph, the legend is misplaced.
> >>>>
> >>>> Instead, I try to put some text in xlab, but I do not know how to
> >>>>
> >> get
> >>
> >>>> the +, x , V and other symbol.
> >>>> Does anyone got a solution ?
> >>>>
> >>>> Thanks a lot.
> >>>>
> >>>> Christophe
> >>>>
> >>>> ______________________________________________
> >>>> 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.
> >>>>
> >>>>
> >>>
> >> ______________________________________________
> >> 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.
> >>
> >
> >
>
> ______________________________________________
> 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.



More information about the R-help mailing list