url: https://personal.sron.nl/~pault/ collection-date: September 14, 2021 at 6:41 PM
tags: #[[Good Articles]]
Paul Tol’s Notes
!()### INTRODUCTION TO COLOUR SCHEMES
18 August 2021
Graphics with scientific data become clearer when the colours are chosen carefully. It is convenient to have good default schemes ready for each type of data, with colours that are:
- distinct for all people, including colour-blind readers;
- distinct from black and white;
- distinct on screen and paper;
- matching well together. This site shows such schemes, developed with the help of mathematical descriptions of colour differences and the two main types of colour-blind vision. A colour scheme should reflect the type of data shown. There are three basic types of data:
- Qualitative data – nominal or categorical data, where magnitude differences are not relevant. This includes lines in plots and text in presentations.
- Diverging data – data ordered between two extremes where the midpoint is important, e.g. positive and negative deviations from zero or a mean.
- Sequential data – data ordered from low to high. The following three sections describe colour schemes for these types of data. Other topics:
- Info on simulating approximately how any colour is seen if you are colour-blind.
- The schemes that work well in a monochrome display or printout are highlighted, with tips on how to use them best.
- A very specific colour scheme for the AVHRR global land cover classification.
- A look at a traditional, bad rainbow scheme and how a scheme with fewer colours can be better.
- A way of splitting the data analysis and the production of maps.
- SRON specific: templates for PowerPoint and LaTeX. The smooth rainbow sequential colour scheme is used for example in my test movies (highlights and full set) of atmospheric CO as measured by TROPOMI since 2017.
QUALITATIVE COLOUR SCHEMES
2 April 2021
My default colour scheme for qualitative data is the bright scheme in Fig. 1. Colour coordinates (R,G,B) are given in the RGB colour system (red R, green G and blue B), decimal at the top and hexadecimal below. Click on this and other defining figures for the hexadecimal values as text. An alternative when fewer colours are enough is the high-contrast scheme in Fig. 2, which also works when converted to greyscale. A second alternative is the vibrant scheme in Fig. 3, designed for data visualization framework TensorBoard. A third alternative is the muted scheme in Fig. 4, which has more colours, but lacks a clear red or medium blue. A fourth alternative is the medium-contrast scheme in Fig. 5 with three colour pairs that can work in greyscale, but not as well as the high-contrast scheme.
Colours in default order: ‘#4477AA’, ‘#EE6677’, ‘#228833’, ‘#CCBB44’, ‘#66CCEE’, ‘#AA3377’, ‘#BBBBBB’.
Figure 1: Bright qualitative colour scheme that is colour-blind safe. The main scheme for lines and their labels.
Colours in default order: ‘#004488’, ‘#DDAA33’, ‘#BB5566’.
Figure 2: High-contrast qualitative colour scheme, an alternative to the bright scheme of Fig. 1 that is colour-blind safe and optimized for contrast. The samples underneath are shades of grey with the same luminance; this scheme also works well for people with monochrome vision and in a monochrome printout.
Colours in default order: ‘#EE7733’, ‘#0077BB’, ‘#33BBEE’, ‘#EE3377’, ‘#CC3311’, ‘#009988’, ‘#BBBBBB’.
Figure 3: Vibrant qualitative colour scheme, an alternative to the bright scheme of Fig. 1 that is equally colour-blind safe. It has been designed for data visualization framework TensorBoard, built around their signature orange FF7043. That colour has been replaced here to make it print-friendly.
Colours in default order: ‘#CC6677’, ‘#332288’, ‘#DDCC77’, ‘#117733’, ‘#88CCEE’, ‘#882255’, ‘#44AA99’, ‘#999933’, ‘#AA4499’. Bad data: ‘#DDDDDD’.
Figure 4: Muted qualitative colour scheme, an alternative to the bright scheme of Fig. 1 that is equally colour-blind safe with more colours, but lacking a clear red or medium blue. Pale grey is meant for bad data in maps.
Colours in default order: ‘#6699CC’, ‘#004488’, ‘#EECC66’, ‘#994455’, ‘#997700’, ‘#EE99AA’.
Figure 5: Medium-contrast qualitative colour scheme, an alternative to the high-contrast scheme of Fig. 2 that is colour-blind safe with more colours. It is also optimized for contrast to work in a monochrome printout, but the differences are inevitably smaller. It is designed for situations needing colour pairs, shown by the three rectangles, with the lower half in the greyscale equivalent.
The bright, high-contrast, vibrant, muted and medium-contrast schemes work well for plot lines and map regions, but the colours are too strong to use for backgrounds to mark (black) text, typically in a table. For that purpose, the pale scheme is designed (Fig. 6, top). The colours are inherently not very distinct from each other, but they are clear in a white area. The dark scheme (Fig. 6, bottom) is meant for text itself on a white background, for example to mark a large block of text. The idea is to use one dark colour for support, not all combined and not for just one word.
Colours: ‘#BBCCEE’, ‘#CCEEFF’, ‘#CCDDAA’, ‘#EEEEBB’, ‘#FFCCCC’, ‘#DDDDDD’.
Colours: ‘#222255’, ‘#225555’, ‘#225522’, ‘#666633’, ‘#663333’, ‘#555555’.
Figure 6: Pale and dark qualitative colour schemes where the colours are not very distinct in either normal or colour-blind vision; they are not meant for lines or maps, but for marking text. Use the pale colours for the background of black text, for example to highlight cells in a table. One of the dark colours can be chosen for text itself on a white background, for example when a large block of text has to be marked. In both cases, the text remains easily readable (see Fig. 10).
There are situations where a scheme is needed between the bright and pale schemes, for example (Fig. 10) for backgrounds in a table where more colours are needed than available in the pale scheme and where the coloured areas are small. For this purpose, the light scheme of Fig. 7 is designed.
Colours in default order: ‘#77AADD’, ‘#EE8866’, ‘#EEDD88’, ‘#FFAABB’, ‘#99DDFF’, ‘#44BB99’, ‘#BBCC33’, ‘#AAAA00’, ‘#DDDDDD’.
Figure 7: Light qualitative colour scheme that is reasonably distinct in both normal and colour-blind vision. It was designed to fill labelled cells with more and lighter colours than contained in the bright scheme of Fig. 1, using more distinct colours than that in the pale scheme of Fig. 6 (top), but keeping black labels clearly readable (see Fig. 10). However, it can also be used for general qualitative maps.
Colour names have been added to the scheme definitions as mnemonics for the maker of a figure, not necessarily for use in text: a reader should not have to guess what olive looks like. Colours are identified uniquely by their names within the collective of the bright, pale, dark and light schemes, whereas the high-contrast, vibrant, muted and medium-contrast schemes reuse some names for different colours.
The colours within a qualitative scheme are given in order of changing hue (or luminance in the case of the high- and medium-contrast schemes), but the colours can be picked at random. Often, a data type suggests an appropriate choice or similar data types can be grouped by giving them similar colours. If the colours have to be picked in a fixed sequence, a good order for each scheme is as follows. Click on the defining figures above for the hexadecimal values in this order as text.
bright: blue red green yellow cyan purple grey high-contrast: blue yellow red vibrant: orange blue cyan magenta red teal grey muted: rose indigo sand green cyan wine teal olive purple medium-contrast: light blue dark blue light yellow dark red dark yellow light red light: light blue orange light yellow pink light cyan mint pear olive pale grey
Examples of the use of the qualitative schemes are given in Figs. 8 and 9 for lines of the Tokyo metro and in Fig. 10 for cell backgrounds and text blocks.
Figure 8: Metro lines in Tokyo coloured using the bright, high-contrast, vibrant, muted and medium-contrast scheme.
Figure 9: Metro lines in Tokyo coloured using the light scheme, showing that the light scheme is not meant for lines on a white background (see Fig. 10).
Figure 10: Examples of filling labelled cells. The pale colour scheme can be used for most cases: large patterns with few colours. The highlighting works while the text remains easily readable. The light colour scheme is better when more colours are needed or the colours need to be more distinct, for example when the areas with one colour are small. Note that if the colours were darker, the small print would become difficult to read, while this scheme is much lighter than the schemes for lines (see Fig. 9). This caption is set in dark green, which is distinct from black but still easily readable. The application to maps is shown in Fig. 11. It is a stylized variation of the diagnostic map used by the ColorBrewer website. In one area, all colours are shown in a random pattern. In other areas, basically one colour is shown, but with one small area of each other colour included. This indicates how well the colours within a scheme are identifiable when all of them are used. Figure 11: From top to bottom, diagnostic maps for the bright, high-contrast, vibrant, muted, medium-contrast and light qualitative schemes, given in Figs. 1, 2, 3, 4, 5 and 7, respectively. For each scheme, the section at the left contains all colours, while each of the other sections contains one colour with one diamond of each other colour. This tests how well the colours are identifiable.
The design of the qualitative schemes involved four types of calculations:
- for the distance between colours the CIEDE2000 colour difference Δ_E_00 is used;
- red-blind and green-blind vision is simulated by the method described later;
- colours with the same product of saturation S and value V in the HSV colour system (same vividness) match well together;
- colours are called print-friendly if they are within the CMYK gamut provided by colour profile ISO Coated v2 300 % (discussed below). To reduce the number of calculations without much loss of choice, only websmart colours were considered, meaning the hexadecimal RGB coordinates are only 00, 11, …, FF.
All colours on this site are defined in sRGB colour space, the default used by most software and displays. Printers work in a different colour space that also varies from model to model. When they conform to international standard ISO 12647-2 and the exact printing conditions are not known beforehand, it is recommended to assume the CMYK colour space provided by colour profile ISO Coated v2 300 %. All scheme colours are taken from the overlap between this and the sRGB colour spaces. Individual printers may deviate, probably not so much that colours become unrecognizable, but enough to push some colours closer together. However, it is not possible to take individual printers into account.
The Netherlands Standardization Institute NEN has issued a code of practice which includes a recommended scheme with eight colours, three greys and white. The colours are bright, but differences between them in colour-blind vision are often much smaller than the smallest difference in the bright, vibrant or muted schemes, two colours are not print-friendly and they cannot be quoted without infringing copyright.
DIVERGING COLOUR SCHEMES
31 May 2018
Diverging schemes are for ordered data between two extremes where the midpoint is important. Such schemes could be constructed simply by scaling the colour coordinates linearly, e.g. from blue to white to red. However, by including subtle hue changes, the colours are more distinct and the schemes more attractive. Figures 12, 13 and 14 show the sunset, BuRd and PRGn schemes, which are tweaked versions of schemes on the ColorBrewer website. The darkest shades of the original versions have been removed, because they are too dark and similar to be used in practice. The circled colour is meant for bad data, without drawing attention away from good data with a large deviation from zero. The sunset scheme was designed for situations where bad data have to be shown white. The three schemes look similar in colour-blind vision, so if more than one is used, do not reverse the direction in one of them. If more colours than shown are needed from a given scheme, use a continuous version of the scheme instead of the discrete colours, by linearly interpolating the colour coordinates. If fewer colours are needed, pick colours at equidistant points in the continuous version.
Colours: ‘#364B9A’, ‘#4A7BB7’, ‘#6EA6CD’, ‘#98CAE1’, ‘#C2E4EF’, ‘#EAECCC’, ‘#FEDA8B’, ‘#FDB366’, ‘#F67E4B’, ‘#DD3D2D’, ‘#A50026’. Bad data: ‘#FFFFFF’.
Figure 12: Sunset diverging colour scheme that also works in colour-blind vision. The colours can be used as given or linearly interpolated. The circled colour is meant for bad data. The scheme is related to the ColorBrewer RdYlBu scheme, but with darker central colours and made more symmetric.
Colours: ‘#2166AC’, ‘#4393C3’, ‘#92C5DE’, ‘#D1E5F0’, ‘#F7F7F7’, ‘#FDDBC7’, ‘#F4A582’, ‘#D6604D’, ‘#B2182B’. Bad data: ‘#FFEE99’.
Figure 13: BuRd diverging colour scheme that also works in colour-blind vision. The colours can be used as given or linearly interpolated. The circled colour is meant for bad data. This is the reversed ColorBrewer RdBu scheme.
Colours: ‘#762A83’, ‘#9970AB’, ‘#C2A5CF’, ‘#E7D4E8’, ‘#F7F7F7’, ‘#D9F0D3’, ‘#ACD39E’, ‘#5AAE61’, ‘#1B7837’. Bad data: ‘#FFEE99’.
Figure 14: PRGn diverging colour scheme that also works in colour-blind vision. The colours can be used as given or linearly interpolated. The circled colour is meant for bad data. This is the ColorBrewer PRGn scheme, with green A6DBA0 shifted to ACD39E to make it print-friendly. Examples of the use of the diverging schemes for maps are given in Figs. 15 and 16.
Figure 15: Examples of maps using the diverging colour schemes of Figs. 12, 13 and 14, each discrete and interpolated. Figure 16: Diagnostic maps for the three diverging schemes given in Figs. 12, 13 and 14. For each scheme, the section at the left contains all colours, while each of the other sections contains one colour with one diamond of each other colour. This tests how well the colours are identifiable when kept discrete.
SEQUENTIAL COLOUR SCHEMES
22 September 2018
Sequential schemes are for ordered data from low to high. The YlOrBr scheme given in Fig. 17 is a tweaked version of the ColorBrewer YlOrBr scheme. The most distinct grey is also given, useful for data gaps; it is not meant for extreme values. If more colours than shown are needed from this scheme, use a continuous version of the scheme instead of the discrete colours, by linearly interpolating the colour coordinates. If fewer colours are needed, pick colours at equidistant points in the continuous version. An alternative continuous scale is provided by the iridescent scheme, which is the linear interpolation of the colours specified in Fig. 18. The luminance varies linearly, so this scheme also works well for people with monochrome vision and in a monochrome printout.
Colours: ‘#FFFFE5’, ‘#FFF7BC’, ‘#FEE391’, ‘#FEC44F’, ‘#FB9A29’, ‘#EC7014’, ‘#CC4C02’, ‘#993404’, ‘#662506’. Bad data: ‘#888888’.
Figure 17: YlOrBr sequential colour scheme that also works in colour-blind vision. The colours can be used as given or linearly interpolated. The grey is meant for bad data. This is the ColorBrewer YlOrBr scheme, with orange FE9929 shifted to FB9A29 to make it print-friendly. Pale yellow FFFFE5 can be set to completely white FFFFFF, for example in density histograms.
Colours: ‘#FEFBE9’, ‘#FCF7D5’, ‘#F5F3C1’, ‘#EAF0B5’, ‘#DDECBF’, ‘#D0E7CA’, ‘#C2E3D2’, ‘#B5DDD8’, ‘#A8D8DC’, ‘#9BD2E1’, ‘#8DCBE4’, ‘#81C4E7’, ‘#7BBCE7’, ‘#7EB2E4’, ‘#88A5DD’, ‘#9398D2’, ‘#9B8AC4’, ‘#9D7DB2’, ‘#9A709E’, ‘#906388’, ‘#805770’, ‘#684957’, ‘#46353A’. Bad data: ‘#999999’.
Figure 18: Iridescent sequential colour scheme with a linearly varying luminance that also works in colour-blind vision. The colours should be linearly interpolated, optionally extended towards white and black. The grey is meant for bad data.
There are many warnings that ordered data should not be shown with a rainbow scheme. The arguments are:
- The spectral order of visible light carries no inherent magnitude message. However, a rainbow provides a scheme with many colours, showing subtle effects in the data clearer or making it easier to read the value in a map. There are also cases where a scheme is preferred that does not have pale colours at the low end or middle of the range.
- Most rainbow schemes contain bands of almost constant hue with sharp transitions between them, which are perceived as jumps in the data. This can be avoided with careful design.
- Colour-blind people have difficulty distinguishing some colours of the rainbow. This can be taken into account in the design. Here are given a discrete rainbow scheme (Fig. 19) and a smooth rainbow scheme (Fig. 20) that are reasonably clear in colour-blind vision. To remain colour-blind safe, the discrete rainbow scheme should not be interpolated. The smooth rainbow scheme does not have to be used over the full range (see caption of Fig. 20).
All colours: ‘#E8ECFB’, ‘#D9CCE3’, ‘#D1BBD7’, ‘#CAACCB’, ‘#BA8DB4’, ‘#AE76A3’, ‘#AA6F9E’, ‘#994F88’, ‘#882E72’, ‘#1965B0’, ‘#437DBF’, ‘#5289C7’, ‘#6195CF’, ‘#7BAFDE’, ‘#4EB265’, ‘#90C987’, ‘#CAE0AB’, ‘#F7F056’, ‘#F7CB45’, ‘#F6C141’, ‘#F4A736’, ‘#F1932D’, ‘#EE8026’, ‘#E8601C’, ‘#E65518’, ‘#DC050C’, ‘#A5170E’, ‘#72190E’, ‘#42150A’. Bad data when 23 colours are used: ‘#777777’.
Figure 19: Discrete rainbow colour scheme with 14 or 23 colours for maps. See Fig. 21 for the best subset if a different number of colours is needed. The colours have to be used as given: do not interpolate. For a smooth rainbow scheme, see Fig. 20. The grey is meant for bad data, but white can also be used, except in the case of exactly 23 colours. The colours have been numbered for easy referencing in Fig. 21.
Colours: ‘#E8ECFB’, ‘#DDD8EF’, ‘#D1C1E1’, ‘#C3A8D1’, ‘#B58FC2’, ‘#A778B4’, ‘#9B62A7’, ‘#8C4E99’, ‘#6F4C9B’, ‘#6059A9’, ‘#5568B8’, ‘#4E79C5’, ‘#4D8AC6’, ‘#4E96BC’, ‘#549EB3’, ‘#59A5A9’, ‘#60AB9E’, ‘#69B190’, ‘#77B77D’, ‘#8CBC68’, ‘#A6BE54’, ‘#BEBC48’, ‘#D1B541’, ‘#DDAA3C’, ‘#E49C39’, ‘#E78C35’, ‘#E67932’, ‘#E4632D’, ‘#DF4828’, ‘#DA2222’, ‘#B8221E’, ‘#95211B’, ‘#721E17’, ‘#521A13’. Bad data when off-white is used: ‘#666666’.
Figure 20: Smooth rainbow colour scheme. The colours are meant to be linearly interpolated: for a discrete rainbow scheme, see Fig. 19. Often it is better to use only a limited range of these colours. Starting at purple, bad data can be shown white, whereas starting at off-white, the most distinct grey is given in the circle. If the lowest data value occurs often, start at off-white instead of purple. If the highest data value occurs often, end at red instead of brown. For colour-blind people, the light purples and light blues should not be mixed much. Examples of the use of all sequential schemes for maps are given in Figs. 22 and 23.
The discrete rainbow colour scheme is inspired by the temperature map of the weather forecast in newspaper de Volkskrant: unconnected curves in CIELAB colour space for purples, blues, greens and oranges, each sampled three times but the last one twice extra for yellow and red, in total 14 colours. The curves were straightened, shifted and sampled equidistantly to make the colours more distinct, reasonably colour-blind safe and print-friendly. Later, the lines were resampled with smaller distances and the scheme was extended towards white and black, to get 23 colours. Figure 21 shows how the two sets can be combined to make a scheme with any number of colours up to 23.
Figure 21: Discrete rainbow colour scheme for maps, with 1 to 23 colours. The numbers refer to the colour definitions in Fig. 19.
Discrete rainbow (14 colours)
Smooth rainbow (purple to red)
Smooth rainbow (purple to brown)
Discrete rainbow (23 colours)
Smooth rainbow (off-white to red)
Smooth rainbow (off-white to brown)
Figure 22: Examples of maps using the sequential colour schemes given in Figs. 17, 18, 19 and 20. Figure 23: Diagnostic maps for the discrete sequential schemes given in Figs. 17 and 19. For each scheme, the section at the left contains all colours, while each of the other sections contains one colour with one diamond of each other colour. This tests how well the colours are identifiable.
2 April 2021
People usually find out at an early age whether they are colour-blind. However, there are subtle variants of colour-vision deficiency. The two main types are:
- Green-blindness – the cone cells in the retina that are sensitive to medium wavelengths are absent or have their response shifted to the red (6 % of men, 0.4 % of women);
- Red-blindness – the cone cells in the retina that are sensitive to long wavelengths are absent or have their response shifted to the green (2.5 % of men). Effectively, one (and only one) of the three types of colour receptors is missing. In the much rarer monochrome vision, all working colour receptors are the same or missing and only brightness variations are seen. Figure 24 is a test on green-blindness and red-blindness. It works on a computer screen (when looking straight at it), projected with a beamer and sometimes even in unfaded print, although this will depend on the quality of the equipment. Figure 24: The readable text in this image is the colour-vision diagnosis of the reader. It is not a puzzle: there is no hidden message that requires much effort to see. The clarity of the text is not important, only whether it is readable at all; in normal vision one text is clearer than the other. This test only works for standard, red-blind and green-blind vision, not monochrome vision. Please do not make life-changing decisions based only on this test.
To simulate green-blindness, all RGB colours in an image are converted to R′G′B′ colours with
_R_ ′ = (4211 + 0.677 _G_ 2.2 + 0.2802 _R_ 2.2)1⁄2.2,
_G_ ′ = (4211 + 0.677 _G_ 2.2 + 0.2802 _R_ 2.2)1⁄2.2,
_B_ ′ = (4211 + 0.95724 _B_ 2.2 + 0.02138 _G_ 2.2 − 0.02138 _R_ 2.2)1⁄2.2,
with parameters R, G and B in the range 0–255 and the output values rounded. To simulate red-blindness, colours are shifted as follows:
_R_ ′ = (782.7 + 0.8806 _G_ 2.2 + 0.1115 _R_ 2.2)1⁄2.2,
_G_ ′ = (782.7 + 0.8806 _G_ 2.2 + 0.1115 _R_ 2.2)1⁄2.2,
_B_ ′ = (782.7 + 0.992052 _B_ 2.2 − 0.003974 _G_ 2.2 + 0.003974 _R_ 2.2)1⁄2.2.
These conversions should be applied in sRGB colour space, i.e. they work on a standard video display, but not necessarily on paper. The conversion can be performed with the free software suite ImageMagick. The following two commands make green-blind and red-blind versions of original image original.png, respectively:
convert original.png \( +clone -channel RG -fx “(0.02138+0.6770*G^2.2+0.2802*R^2.2)^(1⁄2.2)” \) +swap -channel B -fx “(0.02138(1+v.G^2.2-v.R^2.2)+0.9572*v.B^2.2)^(1⁄2.2)” greenblind.png
convert original.png \( +clone -channel RG -fx “(0.003974+0.8806*G^2.2+0.1115*R^2.2)^(1⁄2.2)” \) +swap -channel B -fx “(0.003974(1-v.G^2.2+v.R^2.2)+0.9921*v.B^2.2)^(1⁄2.2)” redblind.png
These are Unix-style commands, for Windows replace \( and \) by ( and ). Figure 25 shows the result when they are applied to a triangle of normal colours.
Figure 25: Colour scale in normal, green-blind and red-blind vision. These conversions are only approximate and are designed for a computer screen. Contrary to popular belief, pure red and green can be distinguished. Instead, yellow/green and purple/blue combinations are problematic. However, there are more unexpected pairs of colours that look the same, as used in Fig. 24. Table 1 shows colour-blind vision simulations of the colour schemes given on this site.
2 April 2021
According to the Web Content Accessibility Guidelines, a contrast ratio between colours of at least 3 is recommended by ISO-9241-3 for standard text and vision, but the Guidelines define a stronger criterion of at least 4.5 to make the colours useful for people with moderately low vision. This includes people with monochrome vision, who only see brightness variations. The criterion actually only applies to body text, but “charts, graphs, diagrams, and other non-text-based information […] should also have good contrast to ensure that more users can access the information.”
The criterion cannot be met using more than one print-friendly websmart colour plus white and black. The only blue shades are 4477BB and 5577AA, almost the same as the blue from the bright scheme. A websmart shade of grey is not available: only 757575 meets the criterion. The largest minimum contrast ratio in a set of two print-friendly websmart colours plus white and black is 2.8 and in a set with three such colours 2.1. One example with three colours is the high-contrast scheme. However, with some precautions it can still be applied to lines and symbols: use the colours in the order
- blue yellow red from the high-contrast scheme on a white background and use black only for annotation (e.g. text or a grid) that is not on top of blue. When the first two colours are used, the contrast between yellow and white is just 2.1, but that is probably less important than the contrast between blue and yellow, which is large enough: 4.52. Only in the case of all three colours does the contrast between them decrease to 2.1, but that is the highest achievable value. Use different types of lines and symbols for better clarity.
The largest minimum contrast ratio with six colours is 1.5. The medium-contrast scheme uses print-friendly websmart colours not darker than the blue in the high-contrast scheme (from light to dark):
- light yellow light red light blue dark yellow dark red dark blue from the medium-contrast scheme with the contrast ratio decreasing slightly to 1.4 between the lighter colours.
All other schemes fail the contrast-ratio criterion completely, as they contain too many colours and were designed for standard, red-blind and green-blind vision, relying not only on brightness differences, but also on hue differences. If one of the other qualitative schemes is used, the best subsets for greyscale conversion are (from light to dark):
- yellow red blue from the bright scheme;
- cyan teal red from the vibrant scheme;
- cyan olive purple wine from the muted scheme. These subsets are slightly clearer than the medium-contrast scheme (but with fewer colours) and less clear than the high-contrast scheme.
The YlOrBr and iridescent sequential schemes work well (Fig. 26). The latter was designed for this purpose, with a linearly varying luminance. Python’s default sequential scheme viridis has a similar property, but it is not print-friendly and seems to have fewer discernible colours. The rainbow schemes do not work. By definition, all diverging schemes do not work either after greyscale conversion.
Figure 26: The YlOrBr and iridescent sequential colour schemes, with below the grey shades with the same luminance.
COLOUR SCHEME FOR GROUND COVER
31 May 2018
Some data sets need a very specific colour scheme. An example is the global land cover classification, as generated by the University of Maryland Department of Geography from AVHRR data acquired between 1981 and 1994, available at a resolution of 1 km. There is a recommended colour scheme, but the colours are not distinct, some not even in normal vision. Figure 27 gives a more subtle and logical scheme where all colours are distinct in all visions. Figure 28 shows the world with a reduced resolution of 20 km using this scheme. Figure 29 shows only North America at a resolution of 5 km, using almost all classes.
Colours: ‘#5566AA’, ‘#117733’, ‘#44AA66’, ‘#55AA22’, ‘#668822’, ‘#99BB55’, ‘#558877’, ‘#88BBAA’, ‘#AADDCC’, ‘#44AA88’, ‘#DDCC66’, ‘#FFDD44’, ‘#FFEE88’, ‘#BB0011’.
Figure 27: Colour-blind safe colour scheme for the AVHRR global land cover classification. The colours have been numbered with the data values. Figure 28: Global land cover classification using the scheme of Fig. 27. The most frequent value of blocks of 20 × 20 original pixels was used. Figure 29: Land cover classification of North America at a resolution of 5 km. All possible classes except deciduous needleleaf forest are found.
GOOD AND BAD COLOUR SCHEMES COMPARED
22 November 2009
The following figures show the true physical figure of the Earth using two colour schemes: the smooth sunset scheme defined here and a traditional rainbow scheme as defined by many programs (e.g. IDL).
Most rainbow schemes contain bands of almost constant hue with sharp transitions between them, which are perceived as jumps in the data. In this example large areas are green without features, while for example the yellow line in northern Australia implies a sudden change that does not exist in reality. The oceanic trench at top right can be seen over the whole length with the sunset scheme, while it becomes difficult to see near Japan with the traditional scheme. This shows that it is more important that a scheme is smooth than that it contains many colours. In addition, colour-blind people have difficulty distinguishing some colours of the rainbow. With the traditional scheme, the yellow spot in the middle of the Sahara is not visible in red-blind vision, making the green areas effectively even larger than they are in normal vision. Last but not least, the sunset scheme emphasizes more clearly the average (light colours) and the extremes (dark colours of contrasting hues).
In this context the meaning of the figures is not really important, but if you’re interested: they show the distance between the WGS84 ellipsoid and the geoid calculated with the EGM96 gravity model.
31 December 2012
Currently I produce maps in two steps. First, I perform the analysis in whatever program and export the data as a particular type of ASCII table. Then, I apply a colour look-up table to the data and export the result as a PNG file. This way, I don’t have to redo the analysis if I want a different colour scale, e.g. to emphasize a different value range. The second step is performed on the command line with the command “convert” of ImageMagick, a free, cross-platform and open-source program suite for image manipulation.
The data are exported to a plain portable graymap (PGM) file, which is an ASCII file starting with “P2 w h 65535 “, where w is the width and h the height of the map, followed by a list of integers in the range 0 to (in my case) 65535 with a space or newline between the values. Because the width and height are given, the spaces and newlines can be put wherever you like. The “P2” identifies the file as a PGM file. I scale the data so all values are in the range 0–65532 (but you don’t have to fill this whole range). The other possible values are reserved: 65533 for bad data, 65534 for text and lines and 65535 for no data (e.g. outside the projection of the world).
The colour look-up table (clut) is exported to a plain portable pixmap (PPM) file, which is an ASCII file starting with “P3 1 n 255 “, where n is the number of colours, followed by a list of RGB coordinates of the colours as integers in the range 0–255 with a space or newline between the values. I don’t use perfectly white, because that may become transparent later on.
Now the image can be produced. The data is stored in input.pgm, the clut in clut.ppm and the image should be output.png. If none of the 3 reserved values are used, then the command is:
convert input.pgm -level 0,65532 clut.ppm -interpolate integer -clut -depth 8 output.png
To spread all available colours over the data range [b,w], change the level option to “-level b,w” (values outside this range will have the first or last colour). To interpolate the colours (for a smooth gradient instead of discrete steps), remove option “-interpolate integer”. If any of the reserved values are used, then the command is:
convert input.pgm \( +clone -level 0,65532 clut.ppm -interpolate integer -clut \) \( -clone 0 -black-threshold 65533 -transparent black -fill \#000 -opaque \#FFFEFFFEFFFE -fill \#777 -opaque \#FFFDFFFDFFFD \) -flatten -transparent white -depth 8 output.png
Here I have assumed that text should be black (#000), bad data grey (#777) and areas without data transparent. If you want a white instead of a transparent background, remove option “-transparent white”. To treat bad data as background, set it to #FFF. The command above is given in Linux syntax; in Windows, remove all backslashes. If the background is transparent, for clarity a white outline can be added around the objects:
convert output.png -bordercolor none -border 1 \( +clone -channel A -morphology edgeout square +channel +level-colors white \) -compose dstover -composite output_outlined.png
An example: given a map of the albedo at 750 nm including the legend (input.pgm) and a list of colours (clut.ppm), the output of the last two commands above (with “-level 0,9999” and without “-interpolate integer”) is this image.
SRON POWERPOINT TEMPLATE
13 September 2016
The SRON style for presentations has a dark grey background. I have produced a design template for PowerPoint 2003 or earlier and a theme for PowerPoint 2007 or later with a palette including the regular colours white (for titles), light yellow (for normal text) and orange (for stressed text), but also three extra colours that are suitable for use with beamers: the light blue of the footer and shades of green and red that work well.
SRON LATEX TEMPLATE
2 April 2016
The current official style of SRON reports, technotes, etc. can also be achieved in LaTeX and pdfLaTeX. Two files are needed:
- sron.cls, the class file;
- srontemplate.tex, an example and starting point for new documents. Running (pdf)LaTeX on srontemplate.tex should give a result that looks like this. Under Debian, you may need to execute first (once) the command “sudo apt-get install texlive-fonts-extra”.