Dear all, I posted this on Stack Overflow, but there is no response, so I try it here again. I'm wondering about how to draw a highlighted rectangle with log y-axis in a trellis/lattice plot. My idea was to use panel.rect(), which works without a log scale: library(lattice) set.seed(1) y <- runif(100, min=1, max=1000) x <- seq_along(y) xyplot(y ~ x, panel=function(x,y,...) { cpl <- current.panel.limits() panel.rect(xleft=cpl$xlim[1], ybottom=10, xright=cpl$xlim[2], ytop=500, fill="lightgray", border="lightgray", alpha=.6) panel.xyplot(x,y,...) }, scales=list(y=list(log=FALSE)) ) However, when log=TRUE, the rectangle disappears. Are there any ideas? Thanks, Sven <mail.med.uni-heidelberg.de/questions/tagged/,DanaInfo=stackoverflow.com,SSL+r> [[alternative HTML version deleted]]
Have you tried the ggplot2 package? sthda.com/english/wiki/ggplot2-add-straight-lines-to-a-plot-horizontal-vertical-and-regression-lines Tim -----Original Message----- From: R-help <r-help-bounces at r-project.org> On Behalf Of Garbade, Sven via R-help Sent: Wednesday, March 23, 2022 5:39 AM To: r-help at r-project.org Subject: [R] panel.rect and log scale in lattice plot [External Email] Dear all, I posted this on Stack Overflow, but there is no response, so I try it here again. I'm wondering about how to draw a highlighted rectangle with log y-axis in a trellis/lattice plot. My idea was to use panel.rect(), which works without a log scale: library(lattice) set.seed(1) y <- runif(100, min=1, max=1000) x <- seq_along(y) xyplot(y ~ x, panel=function(x,y,...) { cpl <- current.panel.limits() panel.rect(xleft=cpl$xlim[1], ybottom=10, xright=cpl$xlim[2], ytop=500, fill="lightgray", border="lightgray", alpha=.6) panel.xyplot(x,y,...) }, scales=list(y=list(log=FALSE)) ) However, when log=TRUE, the rectangle disappears. Are there any ideas? Thanks, Sven <urldefense.proofpoint.com/v2/url?u=https-3A__mail.med.uni-2Dheidelberg.de_questions_tagged_-2CDanaInfo-3Dstackoverflow.com-2CSSL-2Br&d=DwICAg&c=sJ6xIWYx-zLMB3EPkvcnVg&r=9PEhQh2kVeAsRzsn7AkP-g&m=FpPsvaC4RAcwCFXTkiSHekD-Kq42a0hxUJvGstcn9J-97cF_sKhux4I2Q2Xoys4N&s=zoK3I2T0bpTMEgeKFzwh3IGQsunArwGKt734uAuYKY4&e= > [[alternative HTML version deleted]] ______________________________________________ R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see urldefense.proofpoint.com/v2/url?u=https-3A__stat.ethz.ch_mailman_listinfo_r-2Dhelp&d=DwICAg&c=sJ6xIWYx-zLMB3EPkvcnVg&r=9PEhQh2kVeAsRzsn7AkP-g&m=FpPsvaC4RAcwCFXTkiSHekD-Kq42a0hxUJvGstcn9J-97cF_sKhux4I2Q2Xoys4N&s=Ah56En_K57pgqMo-alPPK_pxyzmHpZt4xF7hO3DDpS4&ePLEASE do read the posting guide urldefense.proofpoint.com/v2/url?u=http-3A__www.R-2Dproject.org_posting-2Dguide.html&d=DwICAg&c=sJ6xIWYx-zLMB3EPkvcnVg&r=9PEhQh2kVeAsRzsn7AkP-g&m=FpPsvaC4RAcwCFXTkiSHekD-Kq42a0hxUJvGstcn9J-97cF_sKhux4I2Q2Xoys4N&s=Sf4-2puTGAtpoZr1CNzG7wyOZFcVptczggv4aoWUji0&eand provide commented, minimal, self-contained, reproducible code.
On Wed, 23 Mar 2022 09:38:34 +0000 "Garbade, Sven via R-help" <r-help at r-project.org> wrote:> cpl <- current.panel.limits()If you str() the return value of current.panel.limits() from the panel function with log-scaling enabled, you can see that it contains the logarithm of the y-values, as do the y values themselves. This is consistent with ?xyplot saying:>> Note that this is in reality a transformation of the data, not the >> axes. Other than the axis labeling, using this feature is no >> different than transforming the data in the formula; e.g., >> ?scales=list(x = list(log = 2))? is equivalent to ?y ~ log2(x)?....although it could be more explicit. If you take a logarithm of 10 and 500, lrect() should be able to produce a rectangle in the right place. -- Best regards, Ivan