解決方案2:價值顏色
對於通常不對應於單個行的圖形元素,例如條形圖和樹圖,行顏色將無濟於事。但是,我們可以使用Value Colors屬性顏色在Graph Builder中的Color角色中使用它,這些顏色將在圖形中使用。 若要以編程方式創建“值顏色”列屬性,請首先創建測試“值顏色”屬性,然後在數據表上執行“複製表腳本”以查看JMP如何將“值顏色”記錄為JSL。你會看到這樣的事情:
...
Set Property( "Value Colors",
{"#000000" = -5425372, "#003399" = -13577875, "#004899" = -4354269,
"#0063aa" = -13400361, "#006fba" = -2668175, "#0070bc" = -10628061,
...})
在每個賦值中,左側是數據值,右側是顏色值的JSL編號表示,與RGB Color()函數的結果相同。
所以我們的任務是使用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用計算值替換佔位符。但在這裡,有兩個級別的替代正在進行。一個命令, EADD ,有 LLL 佔位符表示值顏色列表,每個作業對應一個, EC ,有佔位符 SSS 和 CCC 對於字符串和顏色。