[R] Adding a vertical line to plot with two overlapping density plots

David L Carlson dcarlson at tamu.edu
Wed Jan 4 19:41:50 CET 2012


That works, but if all you want is one vertical line at 0, this will work

densityplot(~value, thedata.m, groups=variable,auto.key=list(columns=2),
	panel = function(x, y, ...) {
		panel.densityplot(x, ...)
		panel.abline(v=0)
	}
)

----------------------------------------------
David L Carlson
Associate Professor of Anthropology
Texas A&M University
College Station, TX 77843-4352


-----Original Message-----
From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] On
Behalf Of Petr PIKAL
Sent: Wednesday, January 04, 2012 10:27 AM
To: josh rosen
Cc: r-help at r-project.org
Subject: Re: [R] Adding a vertical line to plot with two overlapping density
plots

> 
> thank you very much Petr. Yes, I meant densityplot form lattice. 
> 
> The code I gave plots the densities of both x1 and x2 in one panel. 
> Could you show me how to integrate the function addline into the code so 

> that a vertical line v=0 is added? 

The function is used after you make a plot.

addLine(v=2)

shall be OK

before you of course need to define the function

addLine <- function (a = NULL, b = NULL, v = NULL, h = NULL, ..., once = 
FALSE)
 {
    tcL <- trellis.currentLayout()
    k <- 0
    for (i in 1:nrow(tcL)) for (j in 1:ncol(tcL)) if (tcL[i,
        j] > 0) {
        k <- k + 1
        trellis.focus("panel", j, i, highlight = FALSE)
        if (once)
            panel.abline(a = a[k], b = b[k], v = v[k], h = h[k],
                ...)
        else panel.abline(a = a, b = b, v = v, h = h, ...)
        trellis.unfocus()
    }
 }


Regards
Petr


> 
>  

> On 4 January 2012 15:55, Petr PIKAL <petr.pikal at precheza.cz> wrote:
> Hi
> 
> >
> > Hi,
> > A simple question I hope. I wish to add a single vertical line to a 
plot
> > with several density plots.
> > Here is a simplified example.
> >
> > ############
> > thedata <- data.frame(x1=rnorm(100,1,1),x2=rnorm(100,3,1)) #create 
data
> > thedata.m<-melt(thedata)
> > densityplot(~value, thedata.m, 
groups=variable,auto.key=list(columns=2))
> > #this gives the two density plots
> > #########
> >
> > what I wish now is to add a vertical line, for example v=2.

> If you mean densityplot from lattice here is a function (addapted from
> Gabor Grothendieck's code] which adds arbitrary line(s) into panels. Is
> options are similar to abline and once=TRUE means you want different 
lines
> to different panels.
> 
> > addLine
> function (a = NULL, b = NULL, v = NULL, h = NULL, ..., once = FALSE)
> {
>    tcL <- trellis.currentLayout()
>    k <- 0
>    for (i in 1:nrow(tcL)) for (j in 1:ncol(tcL)) if (tcL[i,
>        j] > 0) {
>        k <- k + 1
>        trellis.focus("panel", j, i, highlight = FALSE)
>        if (once)
>            panel.abline(a = a[k], b = b[k], v = v[k], h = h[k],
>                ...)
>        else panel.abline(a = a, b = b, v = v, h = h, ...)
>        trellis.unfocus()
>    }
> }
> 
> Regards
> Petr
> 
> 
> 
> >
> > Many thanks,
> > Josh.
> >
> >    [[alternative HTML version deleted]]
> >
> > ______________________________________________
> > 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.



More information about the R-help mailing list