[R] legend in lattice densityplot

Chuck Cleland ccleland at optonline.net
Thu Nov 30 16:20:57 CET 2006


Albert Vilella wrote:
> Can I combine colors and line types? For example, would it be possible
> to have 5 colors per 2 types of lines (continuous and dashed)?

  Yes.  Using Gabor's suggestion of changing the trellis settings within
the call to densityplot(), try something like this:

x <- c(rnorm(100,-2,1),rnorm(100,0,1),rnorm(100,2,1))
f <- rep(c("A","B","C"), each=100)
df <- data.frame(x,f)
library(lattice)

densityplot(~ x, groups = f, data = df,
                 plot.points=FALSE,
                 auto.key=TRUE,
                 par.settings = list(superpose.line = list(col =
c("Green", "Red", "Blue"), lty=c(2,1,2))))

> On 11/29/06, Chuck Cleland <ccleland at optonline.net> wrote:
>> Albert Vilella wrote:
>>> Are this legend colors correlated to the plot?
>>   They are if you rely on the colors in
>>
>> trellis.par.get("superpose.line")$col
>>
>>   If you want different colors you might use trellis.par.set() to
>> temporarily change the colors:
>>
>> x <- c(rnorm(100,-2,1),rnorm(100,0,1),rnorm(100,2,1))
>> f <- rep(c("A","B","C"), each=100)
>> df <- data.frame(x,f)
>> library(lattice)
>>
>> oldpar <- trellis.par.get("superpose.line")$col
>>
>> trellis.par.set(superpose.line = list(col = heat.colors(3)))
>>
>> densityplot(~ x, groups = f, data = df,
>>                  plot.points=FALSE,
>>                  auto.key=TRUE)
>>
>> trellis.par.set(superpose.line = list(col = oldpar))
>>
>>   If you don't require points or lines in the key, you also could do
>> something like this:
>>
>> densityplot(~ x, groups = f, data = df,
>>                  plot.points=FALSE,
>>                  key = simpleKey(levels(df$f),
>>                                  lines=FALSE,
>>                                  points=FALSE,
>>                                  col=heat.colors(3)),
>>                  col=heat.colors(3))
>>
>>   To use your own colors without changing the trellis settings and to
>> get lines or points in the key, you probably need at least to use key =
>> simpleKey() rather than the auto.key argument, and you may need to look
>> into draw.key().  Other people on the list might know simpler approaches
>> for using your own colors in this situation.
>>
>>> If I do a:
>>>
>>> densityplot(~x, groups=f, plot.points=FALSE,
>>> auto.key=TRUE,col=heat.colors(5))
>>>
>>> I get different colors in the legend than the plot...
>>>
>>>
>>> On 11/29/06, Chuck Cleland <ccleland at optonline.net> wrote:
>>>> Albert Vilella wrote:
>>>>> Hi,
>>>>>
>>>>> I have a densityplot like this:
>>>>>
>>>>> x = c(rnorm(100,1,2),rnorm(100,2,4),rnorm(100,3,6))
>>>>> f = sample(c("A","B","C","D","E"),300,replace=TRUE)
>>>>> df=data.frame(x,f)
>>>>> library(lattice)
>>>>> attach(df)
>>>>> densityplot(~x, groups=f)
>>>>>
>>>>> And I want to add a legend with the colours for the factors. How can
>>>> I do that?
>>>>> How can I not have the dots of the distribution at the bottom, or at
>>>>> least, make them occupy less vertical space?
>>>>   Change the last line to the following:
>>>>
>>>> densityplot(~x, groups=f, plot.points=FALSE, auto.key=TRUE)
>>>>
>>>> See ?panel.densityplot .
>>>>
>>>>> ______________________________________________
>>>>> R-help at stat.math.ethz.ch 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.
>>>>>
>>>> --
>>>> Chuck Cleland, Ph.D.
>>>> NDRI, Inc.
>>>> 71 West 23rd Street, 8th floor
>>>> New York, NY 10010
>>>> tel: (212) 845-4495 (Tu, Th)
>>>> tel: (732) 512-0171 (M, W, F)
>>>> fax: (917) 438-0894
>>>>
>> --
>> Chuck Cleland, Ph.D.
>> NDRI, Inc.
>> 71 West 23rd Street, 8th floor
>> New York, NY 10010
>> tel: (212) 845-4495 (Tu, Th)
>> tel: (732) 512-0171 (M, W, F)
>> fax: (917) 438-0894
>>
> 
> ______________________________________________
> R-help at stat.math.ethz.ch 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.
> 
> 

-- 
Chuck Cleland, Ph.D.
NDRI, Inc.
71 West 23rd Street, 8th floor
New York, NY 10010
tel: (212) 845-4495 (Tu, Th)
tel: (732) 512-0171 (M, W, F)
fax: (917) 438-0894



More information about the R-help mailing list