NCL Home > Documentation > Functions > Color routines


Allocates new workstation color indexes.


	function NhlNewColor (
		workstations [*] : graphic,  
		red          [*] : float,    
		green        [*] : float,    
		blue         [*] : float     

	return_val [dimsizes(workstations)][dimsizes(red)] :  integer



An array of NCL Workstation identifiers. The identifiers are ones returned either from calling gsn_open_wks or calling create to create a Workstation object.


Arrays of floating-point values between 0 and 1 inclusive. They must all be the same length.

Return value

The color indexes allocated can be different for each workstation identifier, so the return array of color indexes is dimensioned nwks x nrgb , where nwks is the length of workstations, and nrgb is the length of the red, green, blue arrays.


For the color map of each workstation in workstations, this function allocates color indexes for every given red, green, blue triplet.

This function is different than the NhlSetColor procedure in that you are not required to input color indexes for which to put the new colors.

If you are trying to add a color to a color map that already has 256 colors in it, you will get an error. Try using NhlSetColor in this case.

See Also

NhlFreeColor, NhlSetColor, NhlIsAllocatedColor, NhlGetNamedColorIndex, namedcolor2rgb


Example 1

This example draws a filled contour plot over a map. It uses a "rainbow" colormap which has no gray in it. This causes the continents to be drawn in white. The NhlNewColor function is used to add gray to the end of the colormap.

load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"

  datadir  = ncargpath("data")
  datafile = datadir + "/cdf/meccatemp.cdf"
; Load a file record from the netCDF file
; as a read only data set.
  n = addfile(datafile,"r")
  t = n->t(0,:,:)

  type                   = "x11"
  type@wkColorMap        = "rainbow"
  type@wkBackgroundColor = "white"
  type@wkForegroundColor = "black"

  wks = gsn_open_wks(type,"annotation")     ; Open a workstation.
; If you don't add this color, your continent colors
; will be white instead of gray.
  newindex = NhlNewColor(wks,0.8,0.8,0.8)

; Set some resources.
  res                     = True
  res@gsnSpreadColors     = True
  res@gsnSpreadColorEnd   = -2
  res@gsnMaximize         = True
  res@gsnAddCyclic        = False

  res@cnLevelSelectionMode= "ManualLevels"
  res@cnMinLevelValF      =  195.0
  res@cnMaxLevelValF      =  328.0
  res@cnLevelSpacingF     = 2.25
  res@cnFillOn            = True
  res@cnLinesOn           = False

  res@mpGridAndLimbOn     = False
  res@mpFillDrawOrder     = "PostDraw"

  plot = gsn_csm_contour_map(wks,t,res)