Subscribe Bookmark RSS Feed
Craige_Hales

Staff

Joined:

Mar 21, 2013

Can JSL use custom Heat Colors?

Here's a snippet from a future project.  None of the default color themes do what I want (making numbers at each end black or gray) so I passed a theme definition to heat color for the 2nd argument (instead of the name of a default theme).

 

colors = Heat Color(
	// the first argument is a JSL matrix for efficiency:
	(0 :: 800) / 800, // 800 pixels wide, smoothly interpolated by heatcolor
	// the second argument is a list that specifies the color theme
	{"", // no name or flags needed, just the name placeholder
		{ // this theme uses 12 colors
			RGB Color( 0, 0, 0 ), // black
			HLS Color( 4.0 / 10.0, .3, 1 ), // darken beginning
			HLS Color( 5.0 / 10.0, .5, 1 ), //
			HLS Color( 6.0 / 10.0, .5, 1 ), //
			HLS Color( 7.0 / 10.0, .5, 1 ), //
			HLS Color( 8.0 / 10.0, .5, .7 ), // desaturate magenta
			HLS Color( 9.0 / 10.0, .5, 1 ), //
			HLS Color( 0.0 / 10.0, .5, 1 ), //
			HLS Color( 1.0 / 10.0, .5, 1 ), //
			HLS Color( 2.0 / 10.0, .5, 1 ), //
			HLS Color( 3.0 / 10.0, .3, 1 ), // darken ending
			RGB Color( .5, .5, .5 ) // gray
		}, 
		// this theme positions the 12 colors between 0 and 1, inset from the ends
		As List( (1 :: 12) / 13 )[1] // positions 1/13 ... 12/13
	} 
);

For( i = 1, i <= 8, i++, // double the height several times
	colors = colors |/ colors
);

pic = New Image( colors ); // matrix to image

New Window( "Demo Heat Color", pic ); // display

Showing the wash of color from Left to Right matching the color theme specificationShowing the wash of color from Left to Right matching the color theme specification

Here's another approach.

Article Tags