Zuordnen verfügbarer Farben zu einer Antwort: Sie können ein in JMP integriertes Farbthema verwenden oder eine benutzerdefinierte Zuordnung mit Werkzeugen in JMP erstellen. Sie müssen JSL schreiben, um eine benutzerdefinierte Zuordnung zu verwenden. es wird kein Thema sein.
Verwenden eines integrierten Designs: Die HeatColor-Funktion ordnet eine Zahl zwischen Null und Eins einer Farbe zu. Dieses Beispiel verwendet zwei Themen, „jet“ und „spectral“, und ergibt das folgende Bild.
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
)
);

mehr zu HeatColor: Grafische Funktionen
Die integrierten Themen sind nett und freundlich und einfach zu bedienen, aber Sie brauchen vielleicht etwas anderes. Das folgende Beispiel zeigt zwei verschiedene Funktionen in JMP für die Interpolation: Interpolate und SplineEval. Beides hat Vor- und Nachteile. Zuerst der Code für das Bild:
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
)
);

Das Bild zeigt eine grüne Spline-Kurve und eine blaue lineare Interpolationskurve. Beide Kurven werden für die 5 schwarzen Kontrollpunkte erstellt. Oben im Bild ist ein Farbbalken zu sehen, der durch Setzen der grünen Farbkomponente auf den grünen Spline-Kurvenwert erstellt wurde. Unten im Bild ist ein ähnlicher Farbbalken zu sehen, aber die grüne Komponente stammt von der linearen Interpolation.
Möglicherweise wurden Sie bereits durch einen zu hellen Fleck in der unteren Leiste abgelenkt. Keine Sorge, es ist nicht wirklich da, es hängt damit zusammen Machbänder – Wikipedia, die freie Enzyklopädie . Aber das ist ein Grund, warum Sie vielleicht die Spline-Interpolation bevorzugen. Die Spline-Interpolation hat verschiedene Probleme, hauptsächlich im Zusammenhang mit Unter- und Überschwingen. Der obere Balken wird nie ganz so hellgrün wie der untere Balken.Und es ist in diesem Fall schwer zu sagen, aber es fällt auch unter den Endpunkt. Die erste Zeile in der JSL oben, smooth=300, legt die Steifheit/Spannung des Splines fest. Sie müssen einen Wert auswählen, der für Ihre Anwendung geeignet ist.
Im HeatColor-Beispiel könnten Sie das 0..1-Argument (vielleicht mit SQRT) umwandeln, um die Farben zu strecken. Sowohl mit Spline als auch mit Interpolation können Sie den Farbraum stattdessen strecken/stauchen (wie in diesem Beispiel), indem Sie so viele Kontrollpunkte wie nötig einfügen. Sie können auch die roten und blauen Kanäle hinzufügen und ihnen ihre eigenen Profile geben.
Die angehängten Dateien sind die gleichen wie der Code in der Post.
mehr zu SplineEval: Zusätzliche Bemerkungen
mehr zu Interpolieren: Bedingte Funktionen
Aktualisiert am 4. Januar 2017 für die Formatierung und Codereparatur, die die Konvertierung vom alten Blogformat nicht überstanden haben.