'set lon -20 40'
'set lat 30 85'
'set mpdset hires'
'set mproj nps'
'set mpvals -10 30 34 52'
'set gxout shaded'
'set lev 850'
'set gxout contour'
'set string 3 l'
'draw string 1 1 NCEP GFS 1 deg analysis: relative humidity 850hPa'
from numpy.random import uniform, seed
from matplotlib.mlab import griddata
import matplotlib.pyplot as plt
import numpy as np
npts = 200
x = uniform(-2,2,npts)
y = uniform(-2,2,npts)
z = x*np.exp(-x**2-y**2)
xi = np.linspace(-2.1,2.1,100)
yi = np.linspace(-2.1,2.1,200)
zi = griddata(x,y,z,xi,yi,interp='linear')
CS = plt.contour(xi,yi,zi,len(colors)-1,linewidths=0.5,colors='k')
CS = plt.contourf(xi,yi,zi,len(colors)-1,colors=colors,
plt.colorbar() # draw colorbar
plt.title('griddata test (%d points)' % npts)
[X,Y] = meshgrid(-8:.5:8);
R = sqrt(X.^2 + Y.^2) + eps;
Z = sin(R)./R;
Jason C. Fisher, Reto Stauffer, Achim Zeileis
A graphical user interface (GUI) for viewing, manipulating, and choosing HCL color palettes.
Computes palettes based on the HCL (hue-chroma-luminance) color
model (as implemented by
polarLUV). The GUIs interface
the palette functions
rainbow_hcl for qualitative palettes,
sequential_hcl for sequential palettes with a single hue,
heat_hcl for sequential palettes with multiple hues, and
diverge_hcl for diverging palettes (composed from two single-hue
Two different GUIs are implemented and can be selected using the
function input argument
Both GUIs allows for interactive modification of the arguments of the respective
palette-generating functions, i.e.,
starting/ending hue (wavelength, type of color),
minimal/maximal chroma (colorfulness),
minimal maximal luminance (brightness, amount of gray), and
a power transformations that control how quickly/slowly chroma and/or
luminance are changed through the palette. Subsets of the parameters
may not be applicable depending on the type of palette chosen. See
rainbow_hcl and Zeileis et al. (2009) for a more detailed
explanation of the different arguments. Stauffer et al. (2015) provide
more examples and guidance.
Optionally, active palette can be illustrated by using a range of examples such as a map, heatmap, scatter plot, perspective 3D surface etc.
To demonstrate different types of deficiencies, the active palette may
be desaturated (emulating printing on a grayscale printer) and, if the
dichromat package is available, collapsed to
emulate different types of color-blindness (without red-green or green-blue
Returns a palette-generating function with the selected arguments. Thus, the returned function takes an integer argument and returns the corresponding number of HCL colors by traversing HCL space through interpolation of the specified hue/chroma/luminance/power values.
Color palettes based on the HCL and HSV color spaces.
All functions compute palettes based on either the HCL (
or the HSV (
HSV) color space.
rainbow_hcl computes a rainbow of colors (qualitative palette)
defined by different hues given a single value of each chroma and luminance.
It corresponds to
rainbow which computes a rainbow in
sequential_hcl gives a sequential palette starting at the full
l) through to a light color
l) by interpolation.
a set of colors diverging from a neutral center (gray or white, without
color) to two different extreme colors (blue and red by default). This
is similar to
cm.colors. For the diverging HSV colors,
h are needed, a maximal saturation
s and a
v. The saturation is then varied to obtain the
diverging colors. For the diverging HCL colors, again two hues
are needed, a maximal chroma
c and two luminances
The colors are then created by an interpolation between the
full color HCL(
l), a neutral color HCL(
and the other full color HCL(
heat_hcl gives an implementation of
in HCL space. By default, it goes from a red to a yellow hue, while
simultaneously going to lighter colors (i.e., increasing luminance)
and reducing the amount of color (i.e., decreasing chroma).
terrain_hcl palette simply calls
heat_hcl with different
parameters, providing colors similar in spirit to
The lighter colors are not strictly HCL colors, though.
A character vector with (s)RGB codings of the colors in the palette.
Visualization of color palettes (given as hex codes) in RGB and/or HCL coordinates.
specplot transforms a given color palette in hex
codes into their RGB (
polarLUV) coordinates. As the hues for
low-chroma colors are not (or poorly) identified, by default a smoothing
is applied to the hues (
fix = TRUE). Also, to avoid jumps from
0 to 360 or vice versa, the hue coordinates are shifted suitably.
By default (
plot = TRUE) the resulting RGB and HCL coordinates
are visualized by simple line plots along with the color palette
specplot invisibly returns a list with components
a matrix of sRGB coordinates,
a matrix of HCL coordinates,
original color palette
Zeileis A, Hornik K, Murrell P (2009). Escaping RGBland: Selecting Colors for Statistical Graphics. Computational Statistics & Data Analysis, 53, 3259–3270. doi: 10.1016/j.csda.2008.11.033 Preprint available from https://eeecon.uibk.ac.at/~zeileis/papers/Zeileis+Hornik+Murrell-2009.pdf.
Stauffer R, Mayr GJ, Dabernig M, Zeileis A (2015). Somewhere over the Rainbow: How to Make Effective Use of Colors in Meteorological Visualizations. Bulletin of the American Meteorological Society, 96(2), 203–216. doi: 10.1175/BAMS-D-13-00155.1