On Thu, May 21, 2009 at 10:53 AM, Barry Rowlingson <b.rowling...@lancaster.ac.uk> wrote: > On Thu, May 21, 2009 at 5:29 PM, Deepayan Sarkar > <deepayan.sar...@gmail.com> wrote: > > [oops I didnt reply-to-all] > >> But you could specify an explicit 'at' vector specifying the color >> breakpoints: effectively, you want at = do.breaks(zlim, 5). >> >> lattice does have a function called 'level.colors' that factors out >> the color assignment computation. >> > Yes, but these things are all at the wrong conceptual level. What you > are constructing here is a function that maps value to colour, but > keeping it as breaks and cut values and colours instead of > representing it as a function. Wouldn't it be nicer to build a real > function object and have that to pass around?
If that tickles your fancy, it's not a big stretch to get to ---- library(lattice) continuousColours <- function(at, col.regions, ...) { function(x) { level.colors(x, at = at, col.regions = col.regions, ...) } } ## caveat: level.colors requires 'at' values to be unique, hence the 999,1001 scheme2 <- continuousColours(at = list(-1000, 0, 400, 999, 1001, 10000), col.regions = c("blue", "sandYellow", "grassGreen", "rockBrown", "white")) ## you could do something similar with your list format too, of course. --- which gives > scheme2(c(-500, -200, 200, 2000)) [1] "blue" "blue" "sandYellow" "white" But generally speaking, I wouldn't presume to dictate that any given approach is universally "nicer" than another; I don't expect others to have the same tastes as me, and conversely, don't expect to be told what my tastes should be (if I did, I would probably be using Excel). -Deepayan ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel