Hue/Saturation(intensity)
Plots (or Evans Plots)

A Hue/Saturation(intensity)
plot (or Evans plot for short) is a way to visualize spatially, two
variables of
interest, one of which provides some measure of "importance". It is
also able to visualize, in a natural way, a cyclic variable (such as
time of day, time of year, etc). It does this by assigning the hue of
a color to one variable (which may be cyclic) and the saturation of
color to the other variable. The variable associated with saturation
indicates "importance" since low values of this variable fade into
grey regardless of the value of the variable associated with the hue.
I have created a template that makes plotting Evans plots easy. It is
written
for NCL
- a data analysis and plotting language created and maintained by NCAR
in the USA. It is free, actively maintained and improved, and produces
publication quality plots. While it can be used for any dataset it is
particularly aimed at Earth system models and climate models with many
specialist functions to deal with that data. The official NCL Evans
plot webpage can be found here,
it is based on this page.
In order to use the template you need to download
and load the evans_plot.ncl
script, and the gcm_co2_pre.nc, ndvi_time.nc and/or pr_mme_change_sresa2.nc
files in order to run
these examples.
The Evans plot function is called using:
evans_plot_map(wks:graphic, ; pre-created workstation object
hue_data[*][*]:numeric, ; 2D color data
sat_data[*][*]:numeric, ; 2D saturation data
resources:logical) ; optional resources
Two other functions can be called to plot a label bar or color wheel on their own. This is useful when paneling evans plots.
add_ep_label_bar_ndc(wks:graphic, ;pre-created workstation object
resources:logical) ; optional resources
add_ep_color_wheel_bar_ndc(wks:graphic, ;pre-created workstation object
resources:logical) ; optional resources
There are several resources to modify an Evans plot, all of which are
passed to the evans_plot function as attributes of the resources
logical variable (resources which only apply to Evans plots begin with
ep). Below, the type of the attribute is given in { } while the
default value is given in [ ]:
- epCyclic {logical} ; is the hue variable cyclic? [True]
- epHueLabel {string} ; to label the hues [hue_data@units]
- epSatLabel {string} ; to label the saturations [sat_data@units]
- epExplicitSatLevels {float[*]} ; user set saturation levels
- epMaxSatLevel {float} ; max saturation level
- epMinSatLevel {float} ; min saturation level
- epSatLevelSpacing {float} ; saturation level spacing
- epExplicitHueLevels {float[*]} ; user set hue levels
- epMaxHueLevel {float} ; max hue level
- epMinHueLevel {float} ; min hue level
- epHueLevelSpacing {float} ; hue level spacing
- epMinIntensity {float} ; minimum intensity to use (0-1) [0.8]
- epMinSat {float} : minimum saturation to use (0-1) [0.]
- epNumMaxSat {integer} : number of saturation levels to be fully saturated and distinguished by changes in intensity [1 if <6 sat levels, 4 otherwise]
- epReverseSatColors {logical} : reverse the order of the saturation/intensity changes [False]
- epColorBarOn {logical} ; Display the color bar? [true]
- epLabelBarXMin {float} : the left x NDC location to draw the label bar [0.15]
- epLabelBarYMin {float} : the bottom y NDC location to draw the label bar [0.1]
- epLabelBarWidthF {float} : the NDC width of the label bar [0.8]
- epLabelBarHeightF {float} : NDC height of the label bar [0.05]
- epColorWheelOn {logical} ; Display the color wheel? [true]
- epColorWheelScale {float} ; change the size of the color wheel by multiplying by this scale factor [1.]
- epColorWheelCenterX {float} ; center X of color wheel in ndc [0.85]
- epColorWheelCenterY {float} ; center Y of color wheel in ndc [0.85]
- epColorWheelPerimOn {logical} ; draw a box around the color wheel? [False]
- epHueOffset {float} ; make the first hue this many degrees around the color wheel from red (0-360) [0.]
- epReverseHueColors {logical} ; reverse the order of the hues [False]
- epHueFontSize {float} : Font size for the hue numbers. Is also scaled by epColorWheelScale [0.018]
- epSatFontSize {float} : Font size for the sat numbers. Is also scaled by epColorWheelScale [0.015]
evans_1.ncl:
Demonstrates a default
Evans plot of the maximum ndvi (hue) and timing (sat).
The hue tells us what month the maximum NDVI (a
satellite-based measure
of vegetation greeness) occurs and the saturation tells us just how
green the vegetation gets (i.e. grey areas indicate arid (desert)
regions).
This default case picks "nice" hues and
saturations for you. In this
case it plots the data two months at a time; i.e red is jan/feb,
yellow is mar/apr, etc.
evans_2.ncl:
Demonstrates an Evans
plot of the change in precipitation by amount (hue) and percent of
present day (sat). The special resource "epCyclic" is set to False to
indicate the hue variable is not cyclic.
The data are taken from the predictions of 34
realizations
(by 16 GCMs) of the future precipitation under the SRESA2 scenario
of the IPCC report.
evans_3.ncl:
Demonstrates
an Evans plot of the maximum ndvi (hue) and timing (sat).
The color wheel is rotated, scaled, and moved
using the special
"epColorWheelXXX" resources.


evans_4.ncl:
Demonstrates
an Evans plot of the change in precipitation by amount (hue)
and significance (sat).
The probability (significance) of the change is
calculated as a t-test between the precipitation now and the
precipitation
simulated in mid 21st century.
The second plot overlays the 0.9,0.95 and 0.99
significance levels.
The third plot is a standard plot for change in
precip showing
signficance levels. Note that your eye is drawn to the white and red
"hotspots", all of which fall outside the significant zone. The Evans
plot draws your eye to the significant zones which do not correspond
to these "hotspots".
evans_5.ncl:
Demonstrates
a panel plot of Evans plots of the change in precipitation by amount (hue)
and percent (sat).
The probability (significance) of the change is
calculated as a t-test between the precipitation now and the
precipitation
simulated in mid 21st century. The 0.9,0.95 and 0.99
significance levels are overlayed.