
JMP tiene temas de color para diversos propósitos. Jet es uno de los temas cromáticos continuos. No es la opción correcta para la altura en el gráfico anterior, ya que Jet intenta usar todos los colores en lugar de asignarlos de forma que se adapten de bajo a alto (un esquema de la sección Secuencial podría funcionar mejor). Se ve bien, pero los valores más pequeños y más grandes son bastante oscuros.
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.Puede encontrar estos temas en Preferencias (ctrl-K) -> Gráficos, haga clic en los temas para cambiarlos.
Elegí Jet para este vídeo porque hizo una línea brillante en el centro de la escala.
Zoomed 5X to see the sharp transition.Zoomed 5X to see the sharp transition.Amplié la imagen 5X para ver la transición nítida.
Aquí está el JSL. Simplemente usa un promedio de 9 píxeles para obtener el siguiente color; el resultado final es preferir líneas más rectas entre regiones.
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
)
)
)
);
);
Detuve el bucle JSL después de ~28K cuadros; es bastante largo y la tasa de cambio era demasiado baja para ser interesante incluso con el aumento del tamaño del paso.
Autómatas celulares en JMP. ¡Genial!