cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
  • JMP 19 is here! See the new features at jmp.com/new.
  • Register to attend Discovery Summit 2025 Online: Early Users Edition, Sept. 24-25.
Choose Language Hide Translation Bar
Craige_Hales
Super User
Jet theme

Craige_Hales_0-1759158824938.png

JMP has color themes for many purposes. Jet is one of the continuous Chromatic themes. It isn't the right choice for Height in the graph above because Jet is trying to use all the colors rather than trying to assign colors in a way that means short to tall (a scheme from the Sequential section might work better.) It looks pretty, but the smallest and largest values are quite dark.

You can find these themes in Prefs (ctrl-K) -> Graphs, click on the themes to change them.You can find these themes in Prefs (ctrl-K) -> Graphs, click on the themes to change them.

I chose Jet for this video because it made a bright line in the center of the scale.

Zoomed 5X to see the sharp transition.Zoomed 5X to see the sharp transition.

Here's the JSL. It is just using an average of 9 pixels to get the next color; the end result is to prefer straighter lines between regions.

nr = 1080 + 16; // the 16 border is trimmed when the video is made in blender
nc = 1920 + 16; // because the flicker from blue to red to blue is distracting
board = J( nr, nc, Random Uniform( -1, 1 ) ); // only the initial bitmap is random
ww = New Window( "view", img = New Image( Heat Color( (board + 1) / 2, <<"jet" ) ) );
// jet produces the colors from 0 to 1, our bitmap is -1 to 1
dir = "$desktop/heatpic/"; // keep pictures for blender to make into a video
ipic = 1000000; // the picture name is all numeric with a leading 1 
For( i = 1, i < 100000, i += 1,
	img << setpixels( Heat Color( (board + 1) / 2, <<"jet" ) );
	Show( i, i / 100000 );
	ww << inval << updatewindow;
	Wait( .0 );
	img << Save Image( dir || Char( ipic += 1 ) || ".jpg", "jpg" );
	background = If( Sum( board ) > 0, -1, 1 ); // keep the red/blue ratio balanced with the border color
	step = Ceiling( i / 10000 ) + 3; // speed up the animation towards the end
	For( jstep = 1, jstep <= step, jstep += 1,
		Parallel Assign(
			{
				p = .95, // slight extra push away from 0 -- .1^.95 -> .11
				L = .999, // regions close to 1 or -1 flip
				z = 2.35, // flip value; more than this is unstable
				// add padding with background color
				prev = J( nr + 2, 1, background ) || (J( 1, nc, background ) |/ board |/ J( 1, nc, background )) || J( nr + 2, 1, background )
			},
			board[r, c] = (
				x = prev[r :: r + 2, c :: c + 2] ; // depends on padding
				v = Sum( x ) / 9 ; // each pixel is the average of the 9 pixel square
				If( // but...
					v < -L, z, // full negative flips to positive
					v < 0, -(-v) ^ p, // tweak the average with
					v < L, v ^ p, // a push away from zero
					-z // full positive flips to negative
				)
			)
		)
	);
);

I stopped the JSL loop after ~28K frames; it is long enough and the rate of change was too low to be interesting even with the step size increasing.

Last Modified: Sep 29, 2025 8:35 PM
Comments