Hi All, I'm trying trying to draw a colour wheel (a slice of hcl space) in R. Running the code below doesn't give me what I expect - there's some oddly bright colours of the wrong hue around c(0, 0) and I see three coloured circles (a small magenta, a medium sized yellow and a large cyan). Am I doing something wrong or is there a bug in the hcl code? (Also any suggestions for generating a more evenly spaced grid of colours would be greatly appreciated) Regards, Hadley hcl <- expand.grid(h = seq(0, 360, by = 2), c = 70, l = seq(0, 100, by = 2), fixup=FALSE) hcl <- transform(hcl, angle = h * pi / 180, radius = l / 100 ) hcl <- transform(hcl, x = radius * sin(angle), y = radius * cos(angle) ) hcl$colour <- hcl(hcl$h, hcl$c, hcl$l) with(hcl, plot(x, y, col=colour, pch=20)) -- http://had.co.nz/
"hadley wickham" <h.wickham at gmail.com> wrote in message news:f8e6ff050807070906y272bf4b9u7a356a5da0850653 at mail.gmail.com...> there's some > oddly bright colours of the wrong hue around c(0, 0) and I see three > coloured circles (a small magenta, a medium sized yellow and a large > cyan). Am I doing something wrong or is there a bug in the hcl code?You set c = 70 = constant from ?hcl: c The chroma of the color. The upper bound for chroma depends on hue and luminance You seem to have used the full range of possible hue and luminance values. Perhaps your odd colored circles are violations on valid values of chroma? R's HCL documentation (?hcl) isn't very helpful. Foley and van Dam discuss HLS, HSB, HSV, HVC color spaces in the "Computer Graphics" book, but not HCL. The hcl function "corresponds to polar coordinates in the CIE-LUV color space" but it's not clear how one converts from CIELUV to rgb from this page: http://en.wikipedia.org/wiki/CIELUV_color_space. BTW, the R documentation should be changed to eliminate "l" ("el") as formal argument to the hcl function. The book "Code Complete 2" suggests (p. 287) to "avoid names containing hard-to-read characters". I'd suggest "l" ("el") is perhaps the worst possible variable name since it can so easily be confused with "1" ("one"). Also, using "hcl" in different ways in the same code is also discouraged by "Code Complete 2". Again on p. 287: "Avoid the names of standard types, variables, and routines." If "hcl" is a "standard" routine, using "hcl" as a variable name in the same code example using the "hcl" function is not recommended and is confusing. efg Earl F Glynn Bioinformatics Stowers Institute for Medical Research
Hadley:> I'm trying trying to draw a colour wheel (a slice of hcl space) in R. > Running the code below doesn't give me what I expect - there's some > oddly bright colours of the wrong hue around c(0, 0) and I see three > coloured circles (a small magenta, a medium sized yellow and a large > cyan). Am I doing something wrong or is there a bug in the hcl code?All of these have been fixed and do not correspond to HCL colors.> hcl <- expand.grid(h = seq(0, 360, by = 2), c = 70, l = seq(0, 100, by > = 2), fixup=FALSE) > hcl <- transform(hcl, > angle = h * pi / 180, > radius = l / 100 > ) > hcl <- transform(hcl, > x = radius * sin(angle), > y = radius * cos(angle) > ) > hcl$colour <- hcl(hcl$h, hcl$c, hcl$l)If you replace this by hcl$colour <- hcl(hcl$h, hcl$c, hcl$l, fixup = FALSE)> with(hcl, plot(x, y, col=colour, pch=20))Then, the resulting "wheel" has three overlapping "holes" corresponding to the colors previously fixed. Also, as hue/chroma correspond to polar coordinates in the UV plane of CIELUV, it makes more sense to plot wheels in the hue/chroma plane for fixed luminance. To draw a hue/luminance plane for fixed chroma is harder to interpret geometrically. hth, Z> -- > http://had.co.nz/ > > ______________________________________________ > 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. > >