Mappatura dei colori disponibili su una risposta: è possibile utilizzare un tema di colore integrato in JMP oppure creare un mapping personalizzato con gli strumenti in JMP. Dovrai scrivere JSL per usare una mappatura personalizzata; non sarà un tema.
Utilizzo di un tema incorporato: la funzione HeatColor esegue il mapping di un numero compreso tra zero e uno in un colore. Questo esempio utilizza due temi, "jet" e "spettrale" e crea la seguente immagine.
New Window( "Example", Graph Box( Y Scale( -0.6, 1.6 ), X Scale( -5, 105 ),
framesize( 700, 300 ), Marker Size( 6 ), suppressAxes,
For( x = 0, x <= 100, x += .0625,
Pen Color( Heat Color( x / 100, "jet" ) );
Line( {x, 0}, {x, .5} );
Pen Color( Heat Color( x / 100, "spectral" ) );
Line( {x, .6}, {x, 1.1} );
);
Text Color( "black" );
Text( right justified, {98, .1}, "jet color interpolation" ); // use right
Text( right justified, {98, .7}, "spectral color interpolation" ); // justification
)
);

altro su HeatColor: Funzioni grafiche
I temi incorporati sono belli, amichevoli e facili da usare, ma potresti aver bisogno di qualcosa di diverso. Nell'esempio seguente vengono mostrate due diverse funzioni in JMP per l'interpolazione: Interpolate e SplineEval. Entrambi hanno pro e contro. Innanzitutto, il codice per l'immagine:
smooth = 300; // bigger numbers make a stiffer spline
xRange = 0 :: 100; // graph plotted over this range
// greenX,greenY define 5 "control" points for the color; the Y value is the green in RGB
greenX = [0 3 5 7 10] ^ 2; // unevenly spaced points in X: [0 9 25 49 100]
greenY = [0.1 0.4 0.9 0.4 0.1]; // uneven in Y too
// greenCoef is computed once, used a lot in the evaluator
greenCoef = Spline Coef( greenX, greenY, smooth ); // make the coefficients once
greenSpline = Spline Eval( xRange, greenCoef ); //use them here, and below
// greenSpline as a matrix of Ys for each X in the xRange argument
// or...linear piece-wise interpolation (the first argument must be a scalar at this time)
greenLinear = J( 1, N Cols( xRange ), 0 ); // unlike spline, for now at least,
For( i = 1, i <= N Cols( xRange ), i++, // interpolate generates one answer per call
greenLinear[i] = Interpolate( xRange[i], greenX, greenY ); // edgy version of smooth spline
);
// graph the spline and linear colors
New Window( "Example", Graph Box( Y Scale( -0.6, 1.6 ), X Scale( -5, 105 ),
framesize( 700, 300 ), Marker Size( 6 ), suppressAxes,
Pen Color( "green" ); Pen Size( 5 );
Line( xRange, greenSpline ); // draw the smooth spline, thick, green
Pen Color( "blue" ); Pen Size( 3 );
Line( xRange, greenLinear ); // draw the pointy linear interpolation, thinner, blue
// next, draw the large black round marker dots...
Marker( Combine States( Color State( "black" ), Marker State( 12 ) ), greenX, greenY );
// draw the horizontal color bars, above and below the graph
Pen Size(1);
For( x = 0, x <= 100, x += .0625, // generate enough short vertical lines to make a
// solid patch of color. set the color of each line by spline...
Pen Color( RGB Color( 0, Spline Eval( x, greenCoef ), .5 ) ); // use the coefficients again
Line( {x, 1.1}, {x, 1.5} ); // color bar above the graph is for spline
Pen Color( RGB Color( 0, Interpolate( x, greenX, greenY ), .5 ) ); // set color by linear
Line( {x, -.1}, {x, -.5} ); // color bar below graph is linear interpolation
);
// label the color bars. Should work OK with reasonable sized fonts...
Text Color( "white" ); // lands on top of the dark part of the color bar
Text( right justified, {98, -.4}, "linear color interpolation" ); // use right
Text( right justified, {98, 1.2}, "spline color interpolation" ); // justification
)
);

L'immagine mostra una curva spline verde e una curva di interpolazione lineare blu. Entrambe le curve sono costruite per i 5 punti di controllo neri. La parte superiore dell'immagine mostra una barra di colore creata impostando la componente di colore verde sul valore della curva della spline verde. La parte inferiore dell'immagine mostra una barra di colore simile, ma la componente verde proviene dall'interpolazione lineare.
Potresti essere già stato distratto da un punto troppo luminoso nella barra in basso. Non preoccuparti, non è davvero lì, è legato a Bande di Mach - Wikipedia, l'enciclopedia libera . Ma è una ragione per cui potresti preferire l'interpolazione spline. L'interpolazione spline ha diversi problemi, in particolare intorno a sotto e sopra le riprese. La barra in alto non diventa mai verde brillante come la barra in basso. Ed è difficile da dire in questo caso, ma scende anche al di sotto del punto finale. La prima riga nella JSL sopra, liscia = 300, sta impostando la rigidità / tensione della spline. Dovrai scegliere un valore che funzioni per la tua applicazione.
Nell'esempio HeatColor, è possibile trasformare l'argomento 0..1 (con SQRT forse) per allungare i colori. Con sia spline che interpolate, puoi invece allungare / squish lo spazio colore (come in questo esempio) inserendo tutti i punti di controllo di cui hai bisogno. Puoi aggiungere anche i canali rosso e blu e dare loro i loro profili.
I file allegati sono gli stessi del codice nel post.
altro su SplineEval: Note aggiuntive
altro su Interpolate: Funzioni condizionali
Aggiornato 4 gennaio 2016 per la formattazione e la riparazione del codice che non sopravvivono alla conversione dal vecchio formato del blog.