Richard M. Heiberger
2016-Sep-25 18:44 UTC
[R] Add annotation text outside of an xyplot (lattice package)
library(lattice)
library(latticeExtra)
tmp <- data.frame(x=1:10, y=1:10)
xyplot(y ~ x, data=tmp)
xyplot(y ~ x, data=tmp, main="text outside panel clipped") +
## "+" must be on same line as first statement.
## This use of "+" is from latticeExtra.
latticeExtra::layer(panel.text(x=2, y=-0.5, label="very
interesting"))
xyplot(y ~ x, data=tmp, main="outside text displayed",
par.settings=list(clip=list(panel=FALSE)) ## permit text
outside the panel
) +
## "+" must be on same line as first statement.
## This use of "+" is from latticeExtra.
latticeExtra::layer(panel.text(x=2, y=-0.5, label="very
interesting"))
## I use the phrasing "latticeExtra::layer", not the simpler
"layer".
## latticeExtra and ggplot2 both use layer and they use it incompatibly.
## It is possible for both packages to be loaded at the same time, therefore
## I specify latticeExtra explicitly.
## ltext and panel.text are the same.
On Sun, Sep 25, 2016 at 12:32 PM, Jun Shen <jun.shen.ut at gmail.com>
wrote:> Thanks Bert, sub works pretty well.
>
> Carlos, thanks for the suggestion. As I am not familiar with latticeExatra,
> not sure how hard it is to make it work with my plot. I'll try.
>
> On Sat, Sep 24, 2016 at 11:04 AM, Bert Gunter <bgunter.4567 at
gmail.com>
> wrote:
>
>> No.
>>
>> ltext/panel.text plots text *within* panels; IIUC, the OP requested
>> text outside the plots. For that see the details for "main"
and/or
>> "sub" in ?xyplot. I think it could also be done more flexibly
via a
>> legend or a key with a title but no content -- again, see the Help
>> page -- but haven't tried it.
>>
>> Cheers,
>> Bert
>>
>>
>> Bert Gunter
>>
>> "The trouble with having an open mind is that people keep coming
along
>> and sticking things into it."
>> -- Opus (aka Berkeley Breathed in his "Bloom County" comic
strip )
>>
>>
>> On Fri, Sep 23, 2016 at 11:49 PM, Rainer Hurling <rhurlin at
gwdg.de> wrote:
>> > Hi,
>> >
>> > one possible solution is to use ltext().
>> >
>> > ltext(xcoord, ycoord, label="TEST", adj=c(0.5,0.5))
>> >
>> > You have to know or to find out best fitting coordinates.
>> >
>> > Via adj you can control, if the text should adjust left, center or
right
>> > to the coords, and above, center or bottom of them.
>> >
>> > HTH,
>> > Rainer Hurling
>> >
>> >
>> > Am 22.09.2016 um 16:04 schrieb Jun Shen:
>> >> Dear list,
>> >>
>> >> Just wonder if there is a way to add annotation text outside
an xyplot,
>> >> (e.g. the bottom of the plot). the panel.text seems only add
text within
>> >> the plot. Thanks.
>> >>
>> >> Jun
>> >
>> > ______________________________________________
>> > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more,
see
>> > 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]]
>
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> 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.
Bert Gunter
2016-Sep-25 20:34 UTC
[R] Add annotation text outside of an xyplot (lattice package)
... but what if there are multiple panels? "The layer mechanism is a method for augmenting a panel function. It allows expressions to be added to the panel function without knowing what the original panel function was. " As I understand it, the OP requested annotation for the entire lattice display, not single panels thereof. This seems more like a "sub" or "legend" addition. Cheers, Bert Bert Gunter "The trouble with having an open mind is that people keep coming along and sticking things into it." -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip ) On Sun, Sep 25, 2016 at 11:44 AM, Richard M. Heiberger <rmh at temple.edu> wrote:> library(lattice) > library(latticeExtra) > tmp <- data.frame(x=1:10, y=1:10) > > xyplot(y ~ x, data=tmp) > > xyplot(y ~ x, data=tmp, main="text outside panel clipped") + > ## "+" must be on same line as first statement. > ## This use of "+" is from latticeExtra. > latticeExtra::layer(panel.text(x=2, y=-0.5, label="very interesting")) > > xyplot(y ~ x, data=tmp, main="outside text displayed", > par.settings=list(clip=list(panel=FALSE)) ## permit text > outside the panel > ) + > ## "+" must be on same line as first statement. > ## This use of "+" is from latticeExtra. > latticeExtra::layer(panel.text(x=2, y=-0.5, label="very interesting")) > > ## I use the phrasing "latticeExtra::layer", not the simpler "layer". > ## latticeExtra and ggplot2 both use layer and they use it incompatibly. > ## It is possible for both packages to be loaded at the same time, therefore > ## I specify latticeExtra explicitly. > > ## ltext and panel.text are the same. > > > On Sun, Sep 25, 2016 at 12:32 PM, Jun Shen <jun.shen.ut at gmail.com> wrote: >> Thanks Bert, sub works pretty well. >> >> Carlos, thanks for the suggestion. As I am not familiar with latticeExatra, >> not sure how hard it is to make it work with my plot. I'll try. >> >> On Sat, Sep 24, 2016 at 11:04 AM, Bert Gunter <bgunter.4567 at gmail.com> >> wrote: >> >>> No. >>> >>> ltext/panel.text plots text *within* panels; IIUC, the OP requested >>> text outside the plots. For that see the details for "main" and/or >>> "sub" in ?xyplot. I think it could also be done more flexibly via a >>> legend or a key with a title but no content -- again, see the Help >>> page -- but haven't tried it. >>> >>> Cheers, >>> Bert >>> >>> >>> Bert Gunter >>> >>> "The trouble with having an open mind is that people keep coming along >>> and sticking things into it." >>> -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip ) >>> >>> >>> On Fri, Sep 23, 2016 at 11:49 PM, Rainer Hurling <rhurlin at gwdg.de> wrote: >>> > Hi, >>> > >>> > one possible solution is to use ltext(). >>> > >>> > ltext(xcoord, ycoord, label="TEST", adj=c(0.5,0.5)) >>> > >>> > You have to know or to find out best fitting coordinates. >>> > >>> > Via adj you can control, if the text should adjust left, center or right >>> > to the coords, and above, center or bottom of them. >>> > >>> > HTH, >>> > Rainer Hurling >>> > >>> > >>> > Am 22.09.2016 um 16:04 schrieb Jun Shen: >>> >> Dear list, >>> >> >>> >> Just wonder if there is a way to add annotation text outside an xyplot, >>> >> (e.g. the bottom of the plot). the panel.text seems only add text within >>> >> the plot. Thanks. >>> >> >>> >> Jun >>> > >>> > ______________________________________________ >>> > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see >>> > 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]] >> >> ______________________________________________ >> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see >> 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.
Richard M. Heiberger
2016-Sep-25 21:18 UTC
[R] Add annotation text outside of an xyplot (lattice package)
Bert,
I interpreted the OP's request as a single panel xyplot.
The latticeExtra::layer mechanism does work for multiple plots.
library(lattice)
library(latticeExtra)
tmp <- data.frame(x=1:10, y=1:10, g=rep(c("A","B"),
each=5))
xyplot(y ~ x | g, data=tmp)
xyplot(y ~ x | g, data=tmp, main="outside text displayed",
par.settings=list(clip=list(panel=FALSE))) +
latticeExtra::layer(panel.text(x=2, y=-0.5, label="very
interesting"))
xyplot(y ~ x | g, data=tmp, main="outside text displayed",
par.settings=list(clip=list(panel=FALSE))) +
latticeExtra::layer(panel.text(x=2, y=-0.5,
label=c("very interesting", "also
interesting")[panel.number()]))
For the overall lattice display I agree that the mechanisms you
suggested are approriate.
Rich
On Sun, Sep 25, 2016 at 4:34 PM, Bert Gunter <bgunter.4567 at gmail.com>
wrote:> ... but what if there are multiple panels?
>
> "The layer mechanism is a method for augmenting a panel function. It
> allows expressions to be added to the panel function without knowing
> what the original panel function was. "
>
> As I understand it, the OP requested annotation for the entire lattice
> display, not single panels thereof. This seems more like a "sub"
or
> "legend" addition.
>
> Cheers,
> Bert
> Bert Gunter
>
> "The trouble with having an open mind is that people keep coming along
> and sticking things into it."
> -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip
)
>
>
> On Sun, Sep 25, 2016 at 11:44 AM, Richard M. Heiberger <rmh at
temple.edu> wrote:
>> library(lattice)
>> library(latticeExtra)
>> tmp <- data.frame(x=1:10, y=1:10)
>>
>> xyplot(y ~ x, data=tmp)
>>
>> xyplot(y ~ x, data=tmp, main="text outside panel clipped") +
>> ## "+" must be on same line as first statement.
>> ## This use of "+" is from latticeExtra.
>> latticeExtra::layer(panel.text(x=2, y=-0.5, label="very
interesting"))
>>
>> xyplot(y ~ x, data=tmp, main="outside text displayed",
>> par.settings=list(clip=list(panel=FALSE)) ## permit text
>> outside the panel
>> ) +
>> ## "+" must be on same line as first statement.
>> ## This use of "+" is from latticeExtra.
>> latticeExtra::layer(panel.text(x=2, y=-0.5, label="very
interesting"))
>>
>> ## I use the phrasing "latticeExtra::layer", not the simpler
"layer".
>> ## latticeExtra and ggplot2 both use layer and they use it
incompatibly.
>> ## It is possible for both packages to be loaded at the same time,
therefore
>> ## I specify latticeExtra explicitly.
>>
>> ## ltext and panel.text are the same.
>>
>>
>> On Sun, Sep 25, 2016 at 12:32 PM, Jun Shen <jun.shen.ut at
gmail.com> wrote:
>>> Thanks Bert, sub works pretty well.
>>>
>>> Carlos, thanks for the suggestion. As I am not familiar with
latticeExatra,
>>> not sure how hard it is to make it work with my plot. I'll try.
>>>
>>> On Sat, Sep 24, 2016 at 11:04 AM, Bert Gunter <bgunter.4567 at
gmail.com>
>>> wrote:
>>>
>>>> No.
>>>>
>>>> ltext/panel.text plots text *within* panels; IIUC, the OP
requested
>>>> text outside the plots. For that see the details for
"main" and/or
>>>> "sub" in ?xyplot. I think it could also be done more
flexibly via a
>>>> legend or a key with a title but no content -- again, see the
Help
>>>> page -- but haven't tried it.
>>>>
>>>> Cheers,
>>>> Bert
>>>>
>>>>
>>>> Bert Gunter
>>>>
>>>> "The trouble with having an open mind is that people keep
coming along
>>>> and sticking things into it."
>>>> -- Opus (aka Berkeley Breathed in his "Bloom County"
comic strip )
>>>>
>>>>
>>>> On Fri, Sep 23, 2016 at 11:49 PM, Rainer Hurling <rhurlin at
gwdg.de> wrote:
>>>> > Hi,
>>>> >
>>>> > one possible solution is to use ltext().
>>>> >
>>>> > ltext(xcoord, ycoord, label="TEST",
adj=c(0.5,0.5))
>>>> >
>>>> > You have to know or to find out best fitting coordinates.
>>>> >
>>>> > Via adj you can control, if the text should adjust left,
center or right
>>>> > to the coords, and above, center or bottom of them.
>>>> >
>>>> > HTH,
>>>> > Rainer Hurling
>>>> >
>>>> >
>>>> > Am 22.09.2016 um 16:04 schrieb Jun Shen:
>>>> >> Dear list,
>>>> >>
>>>> >> Just wonder if there is a way to add annotation text
outside an xyplot,
>>>> >> (e.g. the bottom of the plot). the panel.text seems
only add text within
>>>> >> the plot. Thanks.
>>>> >>
>>>> >> Jun
>>>> >
>>>> > ______________________________________________
>>>> > R-help at r-project.org mailing list -- To UNSUBSCRIBE and
more, see
>>>> > 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]]
>>>
>>> ______________________________________________
>>> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more,
see
>>> 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.