大家好,
我有一個看似簡單的問題,但我找不到答案。 我製作了一個條形圖,想單獨定制每個條形圖的填充顏色。 該圖是 y 軸上的成本和 x 軸上的汽車製造,每輛汽車製造有兩年。 原因是我有一個一般的填充顏色,具體取決於年份(2017 年和 2018 年),但想突出顯示某些汽車製造不同的顏色(例如,本田 2017 將與其他 2017 年汽車製造不同,而本田 2018 將是與 2018 年其他汽車品牌不同)。
有沒有辦法在圖形構建或完整代碼上輕鬆做到這一點?
提前致謝。
下面的腳本擴展了 Jim 的, @txnelson , 很好的建議,演示瞭如何使用 JSL 修改設置特定的顏色圖例模型。
Names Default to Here(1);
dt = open("$sample_data/big class.jmp");
gb = dt << Graph Builder(
show control panel(0),
Variables(
X( :age ),
X( :sex, Position( 1 ) ),
Y( :height ),
Color(
Transform Column(
"Transform[age]",
Character,
Nominal,
Formula( (Char( :age ) || " ") || :sex )
)
)
),
Elements( Bar( X( 1 ), X( 2 ), Y, Legend( 12 ) ) )
);
//note Item ID count begins with 0
gb << SendToReport(
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
//12,
Properties( 0, {Fill Color( 5 )}, Item ID( "12 F", 1 ) ),
Properties( 1, {Fill Color( 5 )}, Item ID( "12 M", 1 ) ),
Properties( 2, {Fill Color( 20 )}, Item ID( "13 F", 1 ) ),
Properties( 3, {Fill Color( 20 )}, Item ID( "13 M", 1 ) ),
Properties( 4, {Fill Color( 6 )}, Item ID( "14 F", 1 ) ),
Properties( 5, {Fill Color( 6 )}, Item ID( "14 M", 1 ) ),
Properties( 6, {Fill Color( 27 )}, Item ID( "15 F", 1 ) ),
Properties( 7, {Fill Color( 27 )}, Item ID( "15 M", 1 ) ),
Properties( 8, {Fill Color( 26 )}, Item ID( "16 F", 1 ) ),
Properties( 9, {Fill Color( 26 )}, Item ID( "16 M", 1 ) ),
Properties( 10, {Fill Color( 12 )}, Item ID( "17 F", 1 ) ),
Properties( 11, {Fill Color( 12 )}, Item ID( "17 M", 1 ) )
)}
)
);

一種解決方案是創建一個新列,它是 Year 和 Car 列的串聯
結合= char(:年)|| “” || :車;
然後使用這個新列作為圖形生成器中的顏色列。 然後,您可以將每個單獨的條形圖設置為您想要的任何顏色。下面是使用 Big Class 示例數據表的類似示例

有時我也有同樣的問題。
由於 A 列有 6 個元素,B 列有 2 個元素,手動為 6x2 不同子集著色仍然很有趣。
但在其他情況下,手動分配正確的顏色需要花費一些時間。
應用案例:
- 使用 A 列作為顏色
- 使用 B 列 = excepted() 為排除點指定灰色
對於此類應用, GraphBuilder:覆蓋 Dropzone可能是一個強大的功能。