NAME
PDL::Graphics::Prima::Palette - a set of palettes for the Prima graph widget
DESCRIPTION
Suppose you want to use color to convey some meaningful value. For example, you want the color to represent the topography of a landscape, darker is lower, lighter is higher. In that case, you need a mapping from a height to a color, i.e. from a scalar value to a color. This is what palettes provide.
new
You will almost always create palettes using the nick-names in the pal
namespace. However, all Palette classes know how to make new copies of themselves.
apply
Every palette knows how to apply itself to its data. The apply function returns a piddle of Prima color values given a piddle of scalar values.
plotType
Every Palette knows the specific data and plot type to which it belongs. The first time that a Palette is used in a drawing operation, it will become associated with that specific plotType object, which is in turn associated with that specific dataSet and widget. Thereafter, you can retrieve the plotType object using this accessor, but you cannot change it. If you want to use the same Palette on a different plotType, you can copy it using pal::Copy
.
copy
Not yet implemented.
You can make a copy of a Palette that does not have an associated plotType. This way, if you put a lot of effort into making a palette, you can easily reuse that palette with minimal effort.
Special Palettes
This module provides many ready-made palettes with short-name constructors in the pal
namespace.
- pal::Rainbow
-
Runs from red->orange->yellow->green->blue->purple->red in ascending order.
- pal::BlackToWhite
-
Larger values are white, smaller values are black
- pal::WhiteToBlack
-
Larger values are black, smaller values are white
- pal::WhiteToHSV
-
Smaller values are closer to white, larger values are closer to the color indicated by the HSV values that you specify, which are supplied to the function as three different scalars.
For example:
my ($h, $s, $v) = pdl(cl::LightRed)->color_to_rgb->rgb_to_hsv->dog; my $white_to_red = pal::WhiteToHSV($h, $s, $v);
- pal::BlackToHSV
-
Like WhiteToHSV, but smaller values are closer to black instead of white.
- pal::HSVrange
-
Goes in ascending order from the start to the stop values in hue, saturation, and value. All values are specified with key => value pairs. For example, to go from blue to red:
my ($start_h, $start_s, $start_v) = pdl(cl::LightBlue)->color_to_rgb->rgb_to_hsv->dog; my ($stop_h, $stop_s, $stop_v) = pdl(cl::LightRed)->color_to_rgb->rgb_to_hsv->dog; my $blue_to_red = pal::HSVrange( h_start => $start_h, s_start => $start_s, v_start => $start_v, h_stop => $stop_h, s_stop => $stop_s, v_stop => $stop_v, );
AUTHOR
David Mertens (dcmertens.perl@gmail.com)
SEE ALSO
This is a component of PDL::Graphics::Prima. This library is composed of many modules, including:
- PDL::Graphics::Prima
-
Defines the Plot widget for use in Prima applications
- PDL::Graphics::Prima::Axis
-
Specifies the behavior of axes (but not the scaling)
- PDL::Graphics::Prima::DataSet
-
Specifies the behavior of DataSets
- PDL::Graphics::Prima::Internals
-
A dumping ground for my partial documentation of some of the more complicated stuff. It's not organized, so you probably shouldn't read it.
- PDL::Graphics::Prima::Limits
-
Defines the lm:: namespace
- PDL::Graphics::Prima::Palette
-
Specifies a collection of different color palettes
- PDL::Graphics::Prima::PlotType
-
Defines the different ways to visualize your data
- PDL::Graphics::Prima::ReadLine
-
Encapsulates all interaction with the Term::ReadLine family of modules.
- PDL::Graphics::Prima::Scaling
-
Specifies different kinds of scaling, including linear and logarithmic
- PDL::Graphics::Prima::Simple
-
Defines a number of useful functions for generating simple and not-so-simple plots
LICENSE AND COPYRIGHT
Portions of this module's code are copyright (c) 2011 The Board of Trustees at the University of Illinois.
Portions of this module's code are copyright (c) 2011-2012 Northwestern University.
This module's documentation are copyright (c) 2011-2012 David Mertens.
All rights reserved.
This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself.