#### 3.2.4 palette ¶

The plf, pli, and plfp commands require a color scale or palette, which is a continuum of colors to represent the continuous values of a variable. Actually, a palette consists of a finite number of (red, green, blue) triples, which represent a color for each of a finite list of values. A Yorick palette can never have more than 256 colors, so that a type char variable (one byte per item) can hold any index into a palette. Because many screens can display only 256 colors simultaneously, however, you shouldn’t have more than about 200 colors in a palette; that is the size of all of Yorick’s predefined palettes.

The palette command allows you to change palettes. The Yorick distribution comes with predefined palettes called `earth.gp` (the default palette), `gray.gp`, `yarg.gp`, `heat.gp`, `stern.gp`, and `rainbow.gp`. To load the gray palette, you would type:

    palette, "gray.gp"

These palettes tend to start with dark colors and progress toward lighter colors. The exceptions are `yarg.gp`, which is a reversed version of `gray.gp` (your picture looks like the photographic negative of the way it looks with the `gray.gp` palette), and `rainbow.gp`, which runs through the colors in spectral order at nearly constant intensity. Besides `gray.gp` (or `yarg.gp`) and `rainbow.gp`, it’s tough to find color sequences that people have been trained to think have an order. The `heat.gp` palette is a red-orange scale resembling the colors of an iron bar as it grows hotter. The default `earth.gp` is loosely based on mapmaker’s colors from dark blue deep ocean to green lowlands to brown highlands to white mountains.

Instead of a file name, you may pass palette three arrays of numbers ranging from 0 to 255, which are relative intensities of red, green, and blue. For example,

    scale = bytscl(indgen(200),top=255);
    palette, scale,scale,scale;

produces the same palette as `gray.gp`, but by direct specification of RGB values, rather than by reading a palette file.

Yorick internally uses the bytscl function to map the z values in a plf, pli, or plfp command into a (0-origin) index into the palette. Occasionally, as here, you will also want to call bytscl explicitly.

The predefined palette files are in the directory `Y_SITE+"gist"`; you should be able to figure out their format easily if you want to produce your own. If you create a directory `~/Gist` and put your custom palette files there, Yorick will find them no matter what its current working directory. The library include file `color.i` includes functions to help you construct palettes, and a dump_palette function which writes a palette in Yorick’s standard format.

You can use the `query=` keyword to retrieve the RGB values for the currently installed palette:

    local r,g,b;
    palette,query=1, r,g,b;

There is also a `private=` keyword to palette, which you should investigate if you are interested in color table animation, or if other programs steal all your colors.