[R] Question regarding lattice::levelplot and distribution of colors

David Winsemius dwinsemius at comcast.net
Mon Jul 7 05:59:46 CEST 2014


On Jul 6, 2014, at 4:35 PM, Sunny Srivastava wrote:

> Hello R-helpers:
> 
> I think there is some problem with my code, but I would like to seek you
> help because I can't spot it.
> 
> I have a data.frame defined as follows:
> 
> testdf <- structure(list(yy = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
> 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("R", "L"), class = c("ordered",
> "factor")),
>                         xx = c(8L, 44L, 45L, 46L, 47L, 48L, 49L, 50L, 32L,
> 33L, 34L, 37L, 38L, 44L, 47L, 48L),
>                         zz = c(-0.0509470162236187, -0.127284016213917,
> -0.148955671035087, -0.142907338502986, -0.160948815798959,
> -0.173350477727937, -0.161083124553469,
>                             -0.14273409035068, -0.0214438692797626,
> -0.0628618704957434, -0.0877747107755074, -0.0948371137126557,
> -0.0659475583478307, -0.0601482978919971,
>                             -0.0339547824620206, -0.0433516197870341)),
>                    .Names = c("yy", "xx", "zz"),
>                    row.names = c("25", "26", "27", "28", "29", "210",
> "211", "212", "213", "214", "215", "216", "217", "218", "219", "220"),
> class = "data.frame")
> 
> I would like to see a 'levelplot'  of yy vs xx, but the value of xx creates
> problem in the distribution of colors.  I am guessing it is due to the
> value of xx = 8.  The levelplot below seems to be fine.

I think the fundamental problem is that you are trying to use levelplot with a categorical variable on the RHS of the formula. That is NOT what is expected. You are the one who expanded the X range to c(0,50) and the color range to seq(-0.3, 0.3, length = 20).

-- 
David.
> 
> library(latticeExtra)
> 
> 
> ## ok; note the subset argument!
> levelplot(zz ~ xx + yy, testdf, par.settings = custom.theme.2(), subset =
> xx != 8,
>          scales = list(x = list(cex = 0.5, rot=90), y = list(cex = 0.5),
> alternating = FALSE),
>          xlim = c(0, 50),
>          at = seq(-0.3, 0.3, length = 20),
>          panel = function(x, y, z, ...) {
>              panel.levelplot(x, y, z,...)
>          },
>          colorkey=list(labels = list(cex = 1.5))
>          )
> 
> If I remove the subsetting of xx != 8, then the distribution of colors is
> wrong.  Specifically, it ranges from xx =1 to 20 for y = R, which is
> incorrect.  What am I missing here?  Note that using the default color
> scheme has no effect.
> 
> ## seems to be a bug ? see xx = 1 to 20; note that the subset argument is
> removed
> levelplot(zz ~ xx + yy, testdf, par.settings = custom.theme.2(),
>          scales = list(x = list(cex = 0.5, rot=90), y = list(cex = 0.5),
> alternating = FALSE),
>          xlim = c(0, 50),
>          at = seq(-0.3, 0.3, length = 20),
>          panel = function(x, y, z, ...) {
>              panel.levelplot(x, y, z,...)
>          },
>          colorkey=list(labels = list(cex = 1.5))
>          )
> 
> 
> Thanks,
> S.
> 
> 	[[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.

David Winsemius
Alameda, CA, USA



More information about the R-help mailing list