如何偵測X軸順序的變化?如何偵測 X 軸順序的變化?我使用以下 JSL 程式碼標記背景顏色,但使用者可以更改 X 軸的順序,如下圖所示。如果我無法偵測到使用者對圖表進行了此更改,則先前標記的背景顏色區域將不會遵循新的順序,也不會更新。
例如,如果我最初標記年齡為 13 歲,而用戶將順序更改為“升序,體重”,我需要知道用戶已觸發順序更改,以便紅色標記可以正確更新到年齡 13 的位置,而不是保持固定。
我可以使用什麼方法來偵測使用者何時改變X軸順序,或者如何使背景顏色標記隨順序自動變化?
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
GraphX =dt<< Graph Builder(
Size( 534, 450 ),
Show Control Panel( 0 ),
Variables( X( :age ), Y( :weight ), Overlay( :sex ) ),
Elements( Box Plot( X, Y, Legend( 4 ) ) )
);
rep1 = GraphX << report;
frameboxDCRFH = rep1 << XPath( "//FrameBox" );
frameboxDCRFH << Add Graphics Script(
Transparency( 0.1 );
Fill Color( "Red" );
Rect( 0.5, Y Origin() + Y Range(), 1.5, Y Origin(), 1 )
;
);

自動化和腳本回覆:如何偵測 X 軸順序的變化?我認為我們無法訪問此類處理程序,所以您必須在圖形腳本中考慮它,或者使用單獨的繪圖來創建顏色。一種考慮圖形腳本的方法
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
gb = dt << Graph Builder(
Size(534, 492),
Show Control Panel(0),
Variables(X(:age), Y(:weight), Y(:Column 6, Position(1)), Overlay(:sex)),
Elements(
Box Plot(X, Y(1), Legend(4)),
Points(X, Y(2), Overlay(0), Legend(6), Summary Statistic("Median"))
)
);
fb = Report(gb)[FrameBox(1)];
fb << Add Graphics Script(
fb = Report(gb)[FrameBox(1)];
barseg = fb << Find Seg(MarkerSeg(1));
xval = (barseg << Get X Values)[1];
Transparency(0.1);
Fill Color("Red");
Rect(xval - 0.5, Y Origin() + Y Range(), xval + 0.5, Y Origin(), 1)
);
第 6 列的公式
If(:age == 13,
Col Median(:weight, :age),
.
)
新增色條形圖


回覆:如何偵測 X 軸順序的變化?您可以將「額外」列移到右側來改善情節

Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt << New Column("Column 6", Numeric, "Continuous",
Set Property(
"Axis",
{Show Major Ticks(0), Show Minor Ticks(0), Show Labels(0), Min(0.49),
Max(0.5), Inc(0.2), Minor Ticks(0), Label Row(
{Show Major Labels(0), Show Major Ticks(0), Show Minor Ticks(0)}
)}
),
Formula(
If(:age == 13,
1
,
.
)
);
);
gb = dt << Graph Builder(
Size(712, 621),
Show Control Panel(0),
Variables(X(:age), Y(:weight), Y(:Column 6, Position(1), Side("Right")), Overlay(:sex)),
Elements(Bar(X, Y(2), Overlay(0), Legend(9), Summary Statistic("Median")), Box Plot(X, Y(1), Legend(4))),
SendToReport(
Dispatch({}, "400", ScaleBox, {Legend Model(9, Properties(0, {Fill Color(67), Transparency(0.2)}, Item ID("Median(Column 6)", 1)))}),
Dispatch({}, "Y r title", TextEditBox, {Set Text("")}),
Dispatch({}, "400", LegendBox, {Legend Position({9, [2], 4, [0, 1, -3, -3]})})
)
);
回覆:如何偵測 X 軸順序的變化?我希望移除右側的軸。但是,我只知道如何像下圖一樣手動修改“顯示屬性”,並將“可見性”設為“隱藏”。如何使用 JSL 實現此設定?

回覆:如何偵測 X 軸順序的變化?我還想使用 JSL 自動移除圖例設定中的中位數標記。下圖展示如何手動移除它。如何使用 JSL 隱藏它?

回覆:如何偵測 X 軸順序的變化?你的軸設定是什麼?你可以使用這些設定來隱藏/刪除大部分軸。除非你在長條圖中使用點,否則中位數不應該添加標記。如果你指的是圖例項目而不是標記,最簡單的方法是手動隱藏它並複製腳本。
回覆:如何偵測 X 軸順序的變化?
我有一個衍生問題。
如果原始圖表中已經有一個標記為「顏色」的變量,並且無法控制條形圖顏色為紅色,我該怎麼做才能修復它以保持紅色?
以下 JSL 應該可以解決這兩點:
1. 將 color() 加入變數中:
變數(X(:年齡),Y(:體重),Y(:第 6 列,位置(1),側面(“右”)),覆蓋(:性別),
顏色(“性別”)
),
2.將填滿顏色()改為紅色: Dispatch({}, "400", ScaleBox, {Legend Model(9, Properties(0, { Fill Color("Red ") , Transparency(0.2)}, Item ID("Median(Column 6)", 1)))}),
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt << New Column("Column 6", Numeric, "Continuous",
Set Property(
"Axis",
{Show Major Ticks(0), Show Minor Ticks(0), Show Labels(0), Min(0.49),
Max(0.5), Inc(0.2), Minor Ticks(0), Label Row(
{Show Major Labels(0), Show Major Ticks(0), Show Minor Ticks(0)}
)}
),
Formula(
If(:age == 13,
1
,
.
)
);
);
gb = dt << Graph Builder(
Size(712, 621),
Show Control Panel(0),
Variables(X(:age), Y(:weight), Y(:Column 6, Position(1), Side("Right")), Overlay(:sex),Color("sex")),
Elements(Bar(X, Y(2), Overlay(0), Legend(9), Summary Statistic("Median")), Box Plot(X, Y(1), Legend(4))),
SendToReport(
Dispatch({}, "400", ScaleBox, {Legend Model(9, Properties(0, {Fill Color("Red"), Transparency(0.2)}, Item ID("Median(Column 6)", 1)))}),
Dispatch({}, "Y r title", TextEditBox, {Set Text("")}),
Dispatch({}, "400", LegendBox, {Legend Position({9, [2], 4, [0, 1, -3, -3]})})
)
);
回覆:如何偵測 X 軸順序的變化?禁用條形圖變數的顏色並更改顏色?
回覆:如何偵測 X 軸順序的變化?我在自訂圖表中設定了條形的顏色,但沒有任何變化。
或者我應該在另一個面板上設置條形的顏色?我找不到其他地方可以設定條形顏色。

回覆:如何偵測 X 軸順序的變化?運行你的腳本後,我禁用了條形圖的顏色(右)

然後我可以修改中位數(第 6 列)
