解決策2:値の色
棒グラフやツリーマップなど、通常は個々の行に対応しないグラフ要素の場合、行の色は役に立ちません。ただし、Value Colorsプロパティを色グラフビルダーの[色]ロールで使用すると、これらの色がグラフで使用されます。 Value Colors列プロパティをプログラムで作成するには、最初にテスト用のValue Colorsプロパティを作成し、データテーブルに対してテーブルコピースクリプトを実行して、JMPが値カラーをJSLとして記録する方法を確認します。あなたはこのようなものを見るでしょう:
...
Set Property( "Value Colors",
{"#000000" = -5425372, "#003399" = -13577875, "#004899" = -4354269,
"#0063aa" = -13400361, "#006fba" = -2668175, "#0070bc" = -10628061,
...})
各割り当てで、RGB Color()関数の結果と同じように、左側がデータ値、右側がカラー値のJSL数値表現です。
そのため、JSL式を使用してプログラムでそのような式を作成し、それをデータテーブルに送信してAdd Column Properties()メッセージでプロパティを設定します。
これが私のコードです:
eadd = Expr(
Column( "color" ) << Add Column Properties( Set Property( "Value Colors", LLL ) )
);
evc = {};
ec = Expr( SSS = CCC );
For Each Row(
ec2 = Substitute( Name Expr( ec ),
Expr( SSS ), :color,
Expr( CCC ),
RGB Color(
Hex To Number( Substr( :color, 2, 2 ) ),
Hex To Number( Substr( :color, 4, 2 ) ),
Hex To Number( Substr( :color, 6, 2 ) )
)
);
Insert Into( evc, Name Expr( ec2 ) );
);
Substitute Into( eadd, Expr( LLL ), Name Expr( evc ) );
eadd; // evaluates the expression
慣例により、式変数の前には "e"を付け、置換パターンには大文字を使用します。基本的な考え方は、プレースホルダーを使用して基本形式で式を作成し、次にSubstituteを使用してプレースホルダーを計算値に置き換えることです。しかし、ここでは、2つのレベルの代替が行われています。コマンド用のもの eadd これは LLL 値の色のリスト用のプレースホルダ、および各代入用のプレースホルダ ec プレースホルダーがあります SSS そして CCC 文字列と色のために。