From: Maximilian A. <max...@gm...> - 2015-01-08 22:30:25
|
Hi Nathaniel, > > Basically, it allows you to pick the start/end color of a colormap from > two > > cross sections in CIELab space and interpolates those colors linearly > (see > > the README file for more details). > > There's a downside to this approach for the kinds of colormaps we've > been talking about in this thread, where we want both a large > lightness range plus a colorful result. The problem is that the way > color space is shaped, you can't simultaneously have both high > saturation (colorfulness) *and* high/low lightness. So if you pick > your extreme points to be near black and white, then they can only > have a slight tinting of color, and then if you linearly interpolate > between these, then you end up with slightly tinted greyscale. > You raise an excellent point here. It explains nicely what I have experienced while playing with my GUI. Indeed, I found that a simple linear interpolation did not result in totally satisfactory colormaps (see my previous reply to Federico). I couldn't quite explain why, but your explanation makes this clear. One exception I encountered is an interpolation between dark blue and yellow as in the attached screenshot (which I hope makes it through to the mailing list) - probably because it mostly avoids the low-saturation (grey-ish) region of the color space. But I agree with you that using a curved, rather than linear, interpolation can probably yield better results. It sounds like you have a good deal of experience with various color spaces and colormaps. Do you have an idea for a good "recipe" how to pick a curve in a given colorspace that leads to a satisfactory colormap? My first idea was to change the interpolating line to a circular arc passing through an "intermediate" color, but it's not clear to me whether there is any preferred "direction" for nudging the line into an arc. Also, most other colormaps, such as the examples "YlGnBu" and "cubehelix" which you mentioned, use more complicated curves than mere circular arcs (btw, kudos for your script - it's a great way of visualising these colormaps). I don't have enough knowledge yet to decide whether either approach is better. I've started toying with curved interpolations in my code but this is not quite ready to be pushed to Github yet. Anyway, if you have any suggestions I'd love to hear them. I also found a few more blog posts and papers which I hadn't seen before and which look extremely useful: (i) "Subtleties of color" http://earthobservatory.nasa.gov/blogs/elegantfigures/2013/08/05/subtleties-of-color-part-1-of-6/ A series of six blog posts with an excellent introduction to color theory and the issues around choosing colormaps. Well worth a read! It also suggests that CIE L*c*h* space (which uses the three variables lightness, chroma (saturation) and hue), may be a better choice than CIE L*a*b*, which I have been using so far. (ii) "How To Avoid Equidistant HSV Colors" http://vis4.net/blog/posts/avoid-equidistant-hsv-colors/ Blog post with some interactive tools to visualise sections of CIE L*a*b* space and HCL (Hue-Chroma-Lightness) space. Here is a nice standalone version of the second tool: http://tristen.ca/hcl-picker/#/hlc/6/1/1B2531/E5FC74 (iii) "Generating Color Palettes using Intuitive Parameters" http://magnaview.nl/documents/MagnaView-M_Wijffelaars-Generating_color_palettes_using_intuitive_parameters.pdf Excellent-looking paper on the subject. I haven't read it in full yet but it looks like a great resource which might answer some of my questions above. At this stage I'm wondering how best to proceed. There seems to be huge number of resources and information, but we don't really have a clear path forward. I agree with Phil Elson's assessment when I talked to him at the Open Source Day: what we need is for someone to make a suggestion for a colormap and list a number of reasons why this particular one should be chosen. Then we have a basis for discussion and can argue about it. If anybody has such a suggestion yet, it would be great to hear about it (even if it is not perfect). Otherwise I'll try to make one once I have explored various options a bit more (although it may take a little while as my spare time is rather limited at the moment). Best wishes, Max |