Colleagues I am learning lattice graphics (R 2.12.2; OS X). Several days ago, I inquired about adding margin text to lattice graphics. Jim Price offered a useful reply, suggesting that I add: page = function(page) grid.text('words', x = 0.5, y = 0.01) to my call to the function. The entire function that he suggested was; xyplot(1 ~ 1, par.settings = list(layout.heights = list(bottom.padding = 10)), page = function(page) grid.text('words', x = 0.5, y = 0.01)) That worked initially and I also had success with panel.text. However, I am now working with more complicated objects in which more than one image is displayed on a page. In this instance, the text added by the command above appears with each image. I would like it to appear only once, scaled across the entire page, not relative to a single panel. Is there a different command that accomplishes my goal? Or a different implementation of this same command? Any help would be greatly appreciated. Also, because of my naivete with lattice graphics, I may be asking the question in entirely the wrong way -- please feel free to redirect me. Dennis Dennis Fisher MD P < (The "P Less Than" Company) Phone: 1-866-PLessThan (1-866-753-7784) Fax: 1-866-PLessThan (1-866-753-7784) www.PLessThan.com
Hi, You may want to read about ?viewport in the grid package. They allow you to position graphical elements wherever you want on a page, such as lattice plots and text (grid.text). For a high-level interface, you could try the following, library(gridExtra) library(lattice) p1 = xyplot(1~1) p2 = levelplot(volcano) p3 = tableGrob(head(mpg[, 1:3])) p4 = textGrob("some text") grid.arrange(p1, p2, p3, p4, main="global page title", sub=p4, left="page y-label") HTH, baptiste On 10 April 2011 13:33, Dennis Fisher <fisher at plessthan.com> wrote:> Colleagues > > I am learning lattice graphics (R 2.12.2; OS X). ?Several days ago, I inquired about adding margin text to lattice graphics. ?Jim Price offered a useful reply, suggesting that I add: > ? ? ? ?page = function(page) grid.text('words', x = 0.5, y = 0.01) > to my call to the function. ?The entire function that he suggested was; > ? ? ? ?xyplot(1 ~ 1, > ? ? ? ? par.settings = list(layout.heights = list(bottom.padding = 10)), > ? ? ? ? page = function(page) grid.text('words', x = 0.5, y = 0.01)) > That worked initially and I also had success with panel.text. > > However, I am now working with more complicated objects in which more than one image is displayed on a page. ?In this instance, the text added by the command above appears with each image. ?I would like it to appear only once, scaled across the entire page, not relative to a single panel. > > Is there a different command that accomplishes my goal? ?Or a different implementation of this same command? ?Any help would be greatly appreciated. > Also, because of my naivete with lattice graphics, I may be asking the question in entirely the wrong way -- please feel free to redirect me. > > Dennis > > Dennis Fisher MD > P < (The "P Less Than" Company) > Phone: 1-866-PLessThan (1-866-753-7784) > Fax: 1-866-PLessThan (1-866-753-7784) > www.PLessThan.com > > ______________________________________________ > 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. >
Yes, very sorry about this -- I had subconsciously ignored the hypothetical possibility that anyone wouldn't have ggplot2 loaded in their .Rprofile ;) Replacing mpg with beaver1 (datasets) should be more reproducible. That being said, I was told off-list that this is not answering at all the question, whatever it was. Best, baptiste On 11 April 2011 09:54, Mark Leeds <markleeds2 at gmail.com> wrote:> hi? baptiste: thanks for that but how do I get mpg ? I got an error that R > couldn't find it. thanks again. > > > On Sat, Apr 9, 2011 at 9:45 PM, baptiste auguie > <baptiste.auguie at googlemail.com> wrote: >> >> Hi, >> >> You may want to read about ?viewport in the grid package. They allow >> you to position graphical elements wherever you want on a page, such >> as lattice plots and text (grid.text). For a high-level interface, you >> could try the following, >> >> >> library(gridExtra) >> library(lattice) >> >> p1 = xyplot(1~1) >> p2 = levelplot(volcano) >> p3 = tableGrob(head(mpg[, 1:3])) >> p4 = textGrob("some text") >> >> grid.arrange(p1, p2, p3, p4, main="global page title", >> ? ? ? ? ? ? ? ? ? ?sub=p4, left="page y-label") >> >> HTH, >> baptiste >> >> On 10 April 2011 13:33, Dennis Fisher <fisher at plessthan.com> wrote: >> > Colleagues >> > >> > I am learning lattice graphics (R 2.12.2; OS X). ?Several days ago, I >> > inquired about adding margin text to lattice graphics. ?Jim Price offered a >> > useful reply, suggesting that I add: >> > ? ? ? ?page = function(page) grid.text('words', x = 0.5, y = 0.01) >> > to my call to the function. ?The entire function that he suggested was; >> > ? ? ? ?xyplot(1 ~ 1, >> > ? ? ? ? par.settings = list(layout.heights = list(bottom.padding = 10)), >> > ? ? ? ? page = function(page) grid.text('words', x = 0.5, y = 0.01)) >> > That worked initially and I also had success with panel.text. >> > >> > However, I am now working with more complicated objects in which more >> > than one image is displayed on a page. ?In this instance, the text added by >> > the command above appears with each image. ?I would like it to appear only >> > once, scaled across the entire page, not relative to a single panel. >> > >> > Is there a different command that accomplishes my goal? ?Or a different >> > implementation of this same command? ?Any help would be greatly appreciated. >> > Also, because of my naivete with lattice graphics, I may be asking the >> > question in entirely the wrong way -- please feel free to redirect me. >> > >> > Dennis >> > >> > Dennis Fisher MD >> > P < (The "P Less Than" Company) >> > Phone: 1-866-PLessThan (1-866-753-7784) >> > Fax: 1-866-PLessThan (1-866-753-7784) >> > www.PLessThan.com >> > >> > ______________________________________________ >> > 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. > >
Oscar PerpiƱan Lamigueiro
2011-Apr-11 18:08 UTC
[R] Adding margin text to lattice graphics
Hi, You can try the combination of c.trellis and update from the latticeExtra package. For example: p <- xyplot(1~1) update(c(p, p, p, p), xlab='SomeText', ylab='MoreText') update(c(p, p, p, p), xlab=c('SomeText', 'SomeText2'), ylab=c('MoreText', 'MoreText2')) There are lots of examples in help(c.trellis). Cheers. Oscar. ------------- Oscar Perpi??n Lamigueiro Dpto. de Ingenier?a El?ctrica EUITI-UPM http://procomun.wordpress.com --------------------------------------- En Sat, 9 Apr 2011 18:33:42 -0700 Dennis Fisher <fisher at plessthan.com> escribi?:> Colleagues > > I am learning lattice graphics (R 2.12.2; OS X). Several days ago, I inquired about adding margin text to lattice graphics. Jim Price offered a useful reply, suggesting that I add: > page = function(page) grid.text('words', x = 0.5, y = 0.01) > to my call to the function. The entire function that he suggested was; > xyplot(1 ~ 1, > par.settings = list(layout.heights = list(bottom.padding = 10)), > page = function(page) grid.text('words', x = 0.5, y = 0.01)) > That worked initially and I also had success with panel.text. > > However, I am now working with more complicated objects in which more than one image is displayed on a page. In this instance, the text added by the command above appears with each image. I would like it to appear only once, scaled across the entire page, not relative to a single panel. > > Is there a different command that accomplishes my goal? Or a different implementation of this same command? Any help would be greatly appreciated. > Also, because of my naivete with lattice graphics, I may be asking the question in entirely the wrong way -- please feel free to redirect me. > > Dennis > > Dennis Fisher MD > P < (The "P Less Than" Company) > Phone: 1-866-PLessThan (1-866-753-7784) > Fax: 1-866-PLessThan (1-866-753-7784) > www.PLessThan.com > > ______________________________________________ > 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.