11

In order to plot azimuth values for example, does anyone know any good circular color map?
By good I mean, visually suited for human color perception.

I didn't find any suited color ramp preset in QGIS.

So I build one, like the following, by taking profit that HSV values are given as angular degrees:

enter image description here


But I wonder if there is some existing known color ramps for this particular purpose.


Useful link on how to set up a personalized color ramp in QGIS:
Color Ramp in QGIS


Other useful links on perceptual colormaps:

2 Answers 2

5

Interesting question, and one I've stumbled on myself but not found an answer to.

I haven't found any, not even in the extensive cpt-city catalog.. and ColorBrewer doesn't appear to have any either.

The ramp you describe makes sense to me, because :-

  • opposite angles (180 degrees apart) on the HSV wheel are complementary colours.
  • assuming your azimuths start at 0=north, not 0=east, it also gives a sense of illumination (lighter from the south, darker to the north)
  • the hue ramp shows a continuous line

It works well for me - for example, when using this to colour an aspect raster.

However it doesn't work so well under colour-blindness simulation (QGIS allows you to preview the map as a deuteranope/protanope would). Here's what it looks like in one of the colour-blind modes. West and North, and East and South, are difficult to tell apart so it ends up looking a bit "two tone".

enter image description here

After a bit of trial and error I found a ramp which seems to work fairly well for both normal and colour-blind vision, based on your ramp, but working in RGB. The following .qml file has the details. You may need to edit this for versions older than 2.18.7, but you should be able to work out the ramp settings if you can't get this to load.

enter image description here enter image description here

<!DOCTYPE qgis PUBLIC 'http://mrcc.com/qgis.dtd' 'SYSTEM'>
<qgis version="2.18.7" minimumScale="inf" maximumScale="1e+08" hasScaleBasedVisibilityFlag="0">
  <pipe>
    <rasterrenderer opacity="1" alphaBand="-1" classificationMax="360" classificationMinMaxOrigin="MinMaxFullExtentEstimated" band="1" classificationMin="0" type="singlebandpseudocolor">
      <rasterTransparency/>
      <rastershader>
        <colorrampshader colorRampType="INTERPOLATED" clip="0">
          <item alpha="255" value="0" label="0" color="#2250fe"/>
          <item alpha="255" value="92.3" label="92.3" color="#00a83b"/>
          <item alpha="255" value="181" label="181" color="#fdd248"/>
          <item alpha="255" value="271" label="271" color="#b3507e"/>
          <item alpha="255" value="360" label="360" color="#2250fe"/>
        </colorrampshader>
      </rastershader>
    </rasterrenderer>
    <brightnesscontrast brightness="0" contrast="0"/>
    <huesaturation colorizeGreen="128" colorizeOn="0" colorizeRed="255" colorizeBlue="128" grayscaleMode="0" saturation="0" colorizeStrength="100"/>
    <rasterresampler maxOversampling="2"/>
  </pipe>
  <blendMode>0</blendMode>
</qgis>

This makes the differences more visible for both normal and colour blind views. West and east are still a bit difficult to tell apart, but are more distinct than before.

Caveat: I'm not colour blind so I have no idea how accurate the simulation is :)

2

Since this question was originally asked, a full set of perceptually uniform colour ramps, including seven designed for circular data, has become available at https://colorcet.com. An XML file for QGIS is offered at https://colorcet.com/download/index.html as well as style files for a range of other software.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.