Mappage des couleurs disponibles sur une réponse: vous pouvez utiliser un thème de couleur intégré à JMP, ou vous pouvez créer un mappage personnalisé avec des outils dans JMP. Vous devrez écrire JSL pour utiliser un mappage personnalisé. ce ne sera pas un thème.
Utilisation d’un thème intégré: la fonction HeatColor mappe un nombre compris entre zéro et un dans une couleur. Cet exemple utilise deux thèmes, "jet" et "spectral", et crée l'image suivante.
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
)
);

plus sur HeatColor: Fonctions graphiques
Les thèmes intégrés sont agréables, conviviaux et faciles à utiliser, mais vous aurez peut-être besoin de quelque chose de différent. L'exemple suivant illustre deux fonctions différentes dans JMP pour l'interpolation: Interpolate et SplineEval. Les deux ont des avantages et des inconvénients. Tout d'abord, le code de l'image:
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
)
);

La photo montre une courbe spline verte et une courbe d'interpolation linéaire bleue. Les deux courbes sont construites pour les 5 points de contrôle noirs. Le haut de l'image montre une barre de couleur créée en définissant la composante de couleur verte sur la valeur de la courbe de spline verte. Le bas de l'image montre une barre de couleur similaire, mais la composante verte provient de l'interpolation linéaire.
Vous avez peut-être déjà été distrait par une tache trop brillante dans la barre inférieure. Ne vous inquiétez pas, ce n'est pas vraiment là, c'est lié à Bandes Mach - Wikipédia, l'encyclopédie libre . Mais c’est une raison pour laquelle vous pourriez préférer l’interpolation par splines. L'interpolation par splines pose différents problèmes, principalement autour des sous-vues et des sur-prises. La barre supérieure ne devient jamais aussi verte que la barre inférieure. Et il est difficile de dire dans ce cas, mais il plonge aussi en dessous du point final. La première ligne de la JSL ci-dessus, lisse = 300, définit la rigidité / tension de la spline. Vous devrez choisir une valeur qui convient à votre application.
Dans l'exemple HeatColor, vous pouvez transformer l'argument 0..1 (avec SQRT peut-être) pour étirer les couleurs. À la fois avec spline et interpolation, vous pouvez plutôt étirer / réduire l’espace colorimétrique (comme dans cet exemple) en insérant autant de points de contrôle que nécessaire. Vous pouvez également ajouter les canaux rouge et bleu et leur attribuer leurs propres profils.
Les fichiers joints sont les mêmes que le code dans le post.
plus sur SplineEval: Notes complémentaires
plus sur Interpolate: Fonctions conditionnelles
Mise à jour 4Jan2017 pour le formatage et la réparation du code qui n'ont pas survécu à la conversion de l'ancien format de blog.