Just really getting started on this...

Valid HTML 4.01 Strict Valid CSS!


You might be able to install octave and gnuplot from your OS distribution. I used Ubuntu OS for this HOWTO, this also means the csv,txt,m and gnuplot files only have linefeeds and not carriage returns, use an appropriate text editor

A chromaticity diagram is a uniform two dimensional color gamut at a specific level of light. These calculations are at 100% light but any level from 0-1 can be used in the specific program as long as they are used consistently throughout the process.

XYZ tristimulus values can be found at

The CIE calculations and RGB color space primaries/calculations are from

Some basic concepts and planckian white point chromaticities from Olaf Schultz's awk work also found down further on my main page

You can download all the files from the following github to complete the HOWTO

Most of the u'v' octave scripts are named the same as the xy ones, I didn't update the variable names inside them either yet

Open a terminal, at the command prompt type octave and the following instructions



Open another terminal, at the command prompt type the commands


gnuplot>load "visual_upvp_locus.gnuplot"

Valid HTML 4.01 Strict

gnuplot>load "visual_upvp_locus_and_line_of_purples.gnuplot"

Valid HTML 4.01 Strict

gnuplot>load "visual_upvp_locus_and_line_of_purples_labels_planck.gnuplot"

Valid HTML 4.01 Strict

gnuplot>load "visual_upvp_locus_and_line_of_purples_labels_planck_spaces.gnuplot"

Valid HTML 4.01 Strict

octave>XYZ = xy_to_XYZ_points(1);

octave>RGBlinear = XYZ_to_RGBlinear_points(XYZ);

octave>RGB = RGBlinear_to_RGB_points(RGBlinear);

octave>RGBintegers = RGB_to_RGBintegers_points(RGB);

octave>RGBhex = RGBintegers_to_RGBhex_and_upvp_points(RGBintegers);

gnuplot>load "visual_xy_locus_and_line_of_purples_labels_planck_spaces_sRGB_color.gnuplot"

Valid HTML 4.01 Strict

The primary corners and neutral axes didn't seem visually pure and weren't in gimp image editor, here is the reverse calculation and plot, they look like they are supposed to compared to others I have seen. I don't know why the forward calculations don't, maybe I didn't adjust XYZ for white point before the forward calculations, you'll have to switch to the reverse_uv directory.







gnuplot>load "reverse_uv_sRGB.gnuplot"; Valid HTML 4.01 Strict