一個循環會產生多個沒有特定名稱的圖形產生器。 我想製作一個範圍滑桿,以允許我更改日誌中所有圖表的 X 軸範圍(它們都具有相同的範圍),但我不知道如何做到這一點。
驚人的! 為了使其成為範圍滑塊,我執行了以下操作:
名稱預設為此處( 1 );
dt = Open( "$SAMPLE_DATA\big class.jmp" );
dt:age << 建模類型( "連續" );
gb1 = dt << 圖形產生器(
尺寸(528、448)、
顯示控制面板( 0 ),
變項(X(:年齡),Y(:身高)),
元素( 點( X, Y, 圖例( 5 ) ) )
);
gb2 = dt << 圖形產生器(
尺寸(528、448)、
顯示控制面板( 0 ),
變項(X(:年齡),Y(:體重)),
元素( 點( X, Y, 圖例( 5 ) ) )
);
slidervar = Report( gb1 )[axisbox( 1 )] << 取得最小值;
slidervar2 = Report( gb1 )[axisbox( 1 )] << 取得最大值;
新視窗(“範例”,
面板盒(“滑塊盒”,
H 列錶框(
rsb = 範圍滑桿框(
報告( gb1 )[axisbox( 1 )] << 取得最小值, 報告( gb1 )[axisbox( 1 )] << 取得最大值, slidervar, slidervar2,
(
報告( gb1 )[axisbox( 1 )] << Min( slidervar );
報告( gb1 )[axisbox( 1 )] << Max( slidervar2 );
報告( gb2 )[axisbox( 1 )] << Min( slidervar );
報告( gb2 )[axisbox( 1 )] << Max( slidervar2 );
);
)
)
)
);
這樣我就可以為自己的腳本做我需要做的事情了! 吉姆,非常感謝你!
好的,我有一個可以製作圖表的函數。
你是說建立一個空列表,例如 graphslist = {};
然後在函數中,
呼叫圖形產生器一些變量,例如 a = table << Graph builder();
然後插入(graphslist, a);
你是這個意思嗎?
只需將指向每個顯示物件的指標擷取到清單中,然後您可以透過傳回清單來引用每個物件來存取每個顯示物件。
吉姆,
但我注意到您單獨命名了所有圖形生成器物件。
正如我在問題中所說,目前我的程式透過在循環中創建它們來工作,因此它們不被稱為變數名稱。 因此,我不知道如何參考該報告。
最簡單的方法是開啟全域資料過濾器並選擇 X 軸變數作為篩選器變數。 它將設定一個滑塊,允許您更改範圍。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\big class.jmp" );
dt:age << modeling type( "continuous" );
gb1 = dt << Graph Builder(
Size( 528, 448 ),
Show Control Panel( 0 ),
Variables( X( :age ), Y( :height ) ),
Elements( Points( X, Y, Legend( 5 ) ) )
);
gb2 = dt << Graph Builder(
Size( 528, 448 ),
Show Control Panel( 0 ),
Variables( X( :age ), Y( :weight ) ),
Elements( Points( X, Y, Legend( 5 ) ) )
);
dt << Data Filter(
Location( {780, 189} ),
Mode( Show( 1 ), Include( 1 ) ),
Add Filter( columns( :age ) )
);
如果您想開發您可以設定一個滑桿框來更改的最小值和最大值,您可以設定如下:
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\big class.jmp" );
dt:age << modeling type( "continuous" );
gb1 = dt << Graph Builder(
Size( 528, 448 ),
Show Control Panel( 0 ),
Variables( X( :age ), Y( :height ) ),
Elements( Points( X, Y, Legend( 5 ) ) )
);
gb2 = dt << Graph Builder(
Size( 528, 448 ),
Show Control Panel( 0 ),
Variables( X( :age ), Y( :weight ) ),
Elements( Points( X, Y, Legend( 5 ) ) )
);
slidervar = Report( gb1 )[axisbox( 1 )] << get min;
slidervar2 = Report( gb1 )[axisbox( 1 )] << get max;
New Window( "Example",
Panel Box( "Slider Box",
H List Box(
sb = Slider Box(
Report( gb1 )[axisbox( 1 )] << get min,
Report( gb1 )[axisbox( 1 )] << get max,
slidervar,
Report( gb1 )[axisbox( 1 )] << Min( slidervar );
Report( gb2 )[axisbox( 1 )] << Min( slidervar );
),
sb2 = Slider Box(
Report( gb1 )[axisbox( 1 )] << get min,
Report( gb1 )[axisbox( 1 )] << get max,
slidervar2,
Report( gb1 )[axisbox( 1 )] << Max( slidervar2 );
Report( gb2 )[axisbox( 1 )] << Max( slidervar2 );
)
)
)
);
您也可以為每個圖形產生器新增一個圖形腳本,用於偵測 AxisBox(1) 的範圍和原點的變化,然後當偵測到變更時,從發生變化的圖形複製 AxisBox(1) 設定被偵測到,到其他每個圖。 顯然,這更複雜,但是,它確實具有不必有一個帶有滑塊的單獨視窗的優點。