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