I think this is simpler. vol_p2 <- vol_p vol_p2$legend <- NULL print(update(vol_p2, scales=list(y=list(labels=FALSE))), split = c(1, 2, 1, 2), more = TRUE) draw.colorkey(vol_p$legend$right$args$key, draw=TRUE, vp=viewport(y=.27, height=.26, x=.75)) print(update(xy_p, scales=list(y=list(labels=FALSE))), split = c(1, 1, 1, 2), more = FALSE)
On Tue, Oct 25, 2016 at 10:08 PM, Ben Tupper <btup...@bigelow.org> wrote: > Wow! That's exactly what I am looking for! > > I have had both books* open in front of me all day to no avail, and, I was > spinning round and round - I was waaay off in left field. > > Thanks so much! > Ben > > > * https://www.r-project.org/doc/bib/R-books_bib.html#R:Sarkar:2008 > https://www.r-project.org/doc/bib/R-books_bib.html#R:Murrell:2011 > >> On Oct 25, 2016, at 8:07 PM, Paul Murrell <p...@stat.auckland.ac.nz> wrote: >> >> Hi >> >> This might work, though it's a teensy bit more complicated and a bit manual >> (on the left axis labels) and it ignores heights and vertical whitespace ... >> >> library(lattice) >> d <- dim(volcano) >> xy <- data.frame(x = 1:d[1], y = volcano[,30] ) >> library(grid) >> grid.newpage() >> pushViewport(viewport(y=0, height=.5, just="bottom")) >> # Force identical widths where we can >> layout.widths <- lattice.options("layout.widths")[[1]] >> layout.widths$ylab <- list(x=1, units="cm", data=NULL) >> layout.widths$panel <- list(x=1, units="null", data=NULL) >> layout.widths$key.right <- list(x=1, units="cm", data=NULL) >> lattice.options(layout.widths=layout.widths) >> # Force (width of) left axis labels to be the same >> vol_p <- levelplot(volcano, scales=list(y=list(at=seq(10, 60, 10), >> labels=rep(" ", 6)))) >> print(vol_p, newpage=FALSE, prefix="vol_p") >> downViewport("vol_p.panel.1.1.off.vp") >> # Draw proper left axis labels >> grid.text(seq(10, 60, 10), x=unit(0, "npc") - unit(1, "lines"), >> y=unit(seq(10, 60, 10), "native"), just="right", >> gp=gpar(cex=.8)) >> # Determine width of levelplot panel >> border <- grid.get("border", grep=TRUE) >> width <- convertWidth(border$width, "in", valueOnly=TRUE) >> xscale <- current.viewport()$xscale >> upViewport(0) >> pushViewport(viewport(y=.5, height=.5, just="bottom")) >> # Force identical widths where we can >> layout.widths$ylab <- list(x=1, units="cm", data=NULL) >> layout.widths$panel <- list(x=width, units="in", data=NULL) >> layout.widths$key.right <- list(x=1, units="cm", data=NULL) >> lattice.options(layout.widths=layout.widths) >> # Force (width of) left axis labels to be the same >> xy_p <- xyplot(y ~ x, data = xy, xlim=xscale, >> scales=list(y=list(at=seq(100, 200, 20), >> labels=rep(" ", 11)))) >> print(xy_p, newpage=FALSE, prefix="xy_p") >> downViewport("xy_p.panel.1.1.off.vp") >> # Draw proper left axis labels >> grid.text(seq(100, 200, 20), x=unit(0, "npc") - unit(1, "lines"), >> y=unit(seq(100, 200, 20), "native"), just="right", >> gp=gpar(cex=.8)) >> upViewport(0) >> >> Paul >> >> On 26/10/16 10:50, Ben Tupper wrote: >>> Hi, >>> >>> Almost but not quite. It certainly moves the ball down the field, and, >>> dang, that would be way too easy! >>> >>> I have been fiddling with the panel.widths to the lattice::plot method. No >>> joy yet. >>> >>> >>> Ben >>> >>> >>>> On Oct 25, 2016, at 5:14 PM, Paul Murrell <p...@stat.auckland.ac.nz> wrote: >>>> >>>> Hi >>>> >>>> Does this do what you want ? >>>> >>>> library(latticeExtra) >>>> c(vol_p, xy_p, x.same=TRUE) >>>> >>>> Paul >>>> >>>> On 26/10/16 04:30, Ben Tupper wrote: >>>>> Thanks, Bert. >>>>> >>>>> I have used latticeExtra for layering graphics. I'm not sure how I >>>>> would use it to align graphics rather superimposing them. >>>>> >>>>> I shall look into the the custom panel plot but that is very new >>>>> territory for me. >>>>> >>>>> Ben >>>>> >>>>>> On Oct 25, 2016, at 9:13 AM, Bert Gunter <bgunter.4...@gmail.com> >>>>>> wrote: >>>>>> >>>>>> Write a custom panel function for levelplot() that calls >>>>>> panel.xyplot after panel.levelplot. I believe this can also be done >>>>>> by the + operator of the latticeExtra package. >>>>>> >>>>>> You do *not* want to call xyplot after levelplot, as that >>>>>> completely redraws the plot. >>>>>> >>>>>> Cheers, Bert >>>>>> >>>>>> >>>>>> On Oct 25, 2016 2:55 PM, "Ben Tupper" <btup...@bigelow.org >>>>>> <mailto:btup...@bigelow.org>> wrote: Hello, >>>>>> >>>>>> I am drawing a levelplot and an xyplot on a single device as shown >>>>>> in the runnable example below. I would like the x axes to align - >>>>>> that is for them to cover the same extent left-to-right on the >>>>>> device. How do I go about doing that? >>>>>> >>>>>> ####### # START ####### library(lattice) >>>>>> >>>>>> d <- dim(volcano) xy <- data.frame(x = 1:d[1], y = volcano[,30] ) >>>>>> >>>>>> vol_p <- levelplot(volcano) xy_p <- xyplot(y ~ x, data = xy) >>>>>> >>>>>> print(vol_p, split = c(1, 2, 1, 2), more = TRUE) print(xy_p, split >>>>>> = c(1, 1, 1, 2), more = FALSE) ###### #END ###### >>>>>> >>>>>> >>>>>> Thanks! Ben >>>>>> >>>>>> >>>>>>> sessionInfo() >>>>>> R version 3.3.1 (2016-06-21) Platform: x86_64-apple-darwin13.4.0 >>>>>> (64-bit) Running under: OS X 10.11.6 (El Capitan) >>>>>> >>>>>> locale: [1] >>>>>> en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8 >>>>>> >>>>>> attached base packages: [1] stats graphics grDevices utils >>>>>> datasets methods base >>>>>> >>>>>> other attached packages: [1] lattice_0.20-33 >>>>>> >>>>>> loaded via a namespace (and not attached): [1] tools_3.3.1 >>>>>> grid_3.3.1 >>>>>> >>>>>> >>>>>> >>>>>> Ben Tupper Bigelow Laboratory for Ocean Sciences 60 Bigelow Drive, >>>>>> P.O. Box 380 East Boothbay, Maine 04544 http://www.bigelow.org >>>>>> <http://www.bigelow.org/> >>>>>> >>>>>> ______________________________________________ R-help@r-project.org >>>>>> <mailto:R-help@r-project.org> mailing list -- To UNSUBSCRIBE and >>>>>> more, see https://stat.ethz.ch/mailman/listinfo/r-help >>>>>> <https://stat.ethz.ch/mailman/listinfo/r-help> PLEASE do read the >>>>>> posting guide http://www.R-project.org/posting-guide.html >>>>>> <http://www.r-project.org/posting-guide.html> and provide >>>>>> commented, minimal, self-contained, reproducible code. >>>>>> >>>>> >>>>> Ben Tupper Bigelow Laboratory for Ocean Sciences 60 Bigelow Drive, >>>>> P.O. Box 380 East Boothbay, Maine 04544 http://www.bigelow.org >>>>> >>>>> >>>>> >>>>> >>>>> [[alternative HTML version deleted]] >>>>> >>>>> ______________________________________________ R-help@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. >>>>> >>>> >>>> -- >>>> Dr Paul Murrell >>>> Department of Statistics >>>> The University of Auckland >>>> Private Bag 92019 >>>> Auckland >>>> New Zealand >>>> 64 9 3737599 x85392 >>>> p...@stat.auckland.ac.nz >>>> http://www.stat.auckland.ac.nz/~paul/ >>> >>> Ben Tupper >>> Bigelow Laboratory for Ocean Sciences >>> 60 Bigelow Drive, P.O. Box 380 >>> East Boothbay, Maine 04544 >>> http://www.bigelow.org >>> >>> >>> >> >> -- >> Dr Paul Murrell >> Department of Statistics >> The University of Auckland >> Private Bag 92019 >> Auckland >> New Zealand >> 64 9 3737599 x85392 >> p...@stat.auckland.ac.nz >> http://www.stat.auckland.ac.nz/~paul/ > > Ben Tupper > Bigelow Laboratory for Ocean Sciences > 60 Bigelow Drive, P.O. Box 380 > East Boothbay, Maine 04544 > http://www.bigelow.org > > ______________________________________________ > R-help@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. ______________________________________________ R-help@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.