如何繪製列的最後 N 個值的圖表?大家好,
我對 JSL 還比較陌生,所以隨著我的進展,構建我的腳本代碼。
我試圖將 M 值列中最後 25 個數據點的圖形添加到控製圖窗口,例如列 (M-25) 到 (M)。
我正在考慮修改圖表生成器腳本來執行此操作:
Control Chart Builder(
Size( 534, 454 ),
Show Two Shewhart Charts( 0 ),
Show Control Panel( 0 ),
Show Limit Summaries( 0 ),
Show Capability( 0 ),
Variables( Y( :Name( "MyColumn" ) ) ),
Chart(
Points( Statistic( "Individual" ) ),
Limits( Sigma( "Moving Range" ) ),
Warnings( Test Beyond Limits( 1 ) )
),
SendToReport(
Dispatch(
{},
"graph display 1 title",
TextEditBox,
{Set Text( "Last 25 Observations" )}
),
Dispatch( {}, "MyColumn Limit Summaries", OutlineBox, {Close( 1 )} )
)
)我遇到的問題是如何僅選擇要顯示的最後 N 個值(N 可以是 25 或 30 或 100)。 我使用 Igor 或 Matlab 等其他編程語言的經驗並沒有轉化為 JSL 來了解如何僅繪製列中數據子集的圖表。
如果可能的話,我更願意讓它繪製數據與行索引的關係,就像在控製圖中一樣,我知道疊加圖可以做到這一點,但我也喜歡在圖表中顯示平均值。 我不想將數據繪製為“Fit Y by X”。
謝謝!
回复:如何繪製列的最後 N 個值的圖表?你好@戈德溫,
每種特定情況都略有不同,可能需要針對當前的具體情況稍微修改代碼。 如果您可以共享數據表和您正在使用的代碼,這可能會幫助我和該線程上的其他人更好地解決您正在嘗試執行的操作的具體細節。
謝謝!,
DS
回复:如何繪製列的最後 N 個值的圖表?您能否分享您用於控制最後 N 列圖表的確切代碼。 我的修改運氣不佳。
回复:如何繪製列的最後 N 個值的圖表?謝謝!回复:如何繪製列的最後 N 個值的圖表?Names DefaultToHere(1);
// Open a table and give it a table reference ('dt')
dt = Open("$SAMPLE_DATA/Big Class.jmp");
// Select the data you do not want, and exclude them
dt << select where( :sex == "F" );
dt << hide and exclude;
// Clear the selections
dt << clear select;
// Create the chart, only none excluded/hidden rows will be displayed
dt << Graph Builder(
Variables( X( :weight ), Y( :height ) ),
Elements( Points( X, Y, Legend( 6 ) ), Smoother( X, Y, Legend( 7 ) ) )
);回复:如何繪製列的最後 N 個值的圖表?謝謝! 不確定我是否正確提交了問題。 我想繪製給定大數據集的圖表。 但我需要檢查某一特定列是否滿足條件,然後如果滿足條件,則考慮相應的行來繪製圖形。 我想通過 jsl 腳本來做到這一點。 你能幫助我嗎,因為我是初學者。 謝謝!
回复:如何繪製列的最後 N 個值的圖表?這似乎是一個與線程主題不同的問題,但也許可以嘗試這樣的問題:
Names DefaultToHere(1);
// Open a table and give it a table reference ('dt')
dt = Open("$SAMPLE_DATA/Big Class.jmp");
// Get a list of all the columns in the table
cols = dt << getColumnNames("String");
// Define any logical condition that identifies one or more columns by its name
targetCols = {};
for(c=1, c<=NItems(cols), c++, if(Contains(cols[c], "gh"), InsertInto(targetCols, cols[c])));
// Make a plot using'taregtCols' as the y variables
biv = dt << OneWay(X(:sex), Y(Eval(targetCols)));回复:如何繪製列的最後 N 個值的圖表?先生您好,我想繪製給定大數據集的圖表。 但我需要檢查某一特定列是否滿足條件,然後考慮相應的行來繪製圖表。 我想通過 jsl 腳本來做到這一點。 你能幫助我嗎,因為我是初學者。 謝謝!回复:如何繪製列的最後 N 個值的圖表?如何繪製數據表中某一特定列滿足給定 if 條件的數據?回复:如何繪製列的最後 N 個值的圖表?你好@tx尼爾森,謝謝你的建議。 我最終稍微更改了代碼,以便它查找空條目而不僅僅是非零條目。 你的方法很有效,我只需要稍微調整一下以適應我的具體情況。
再次感謝!
lastNmiss = 0;
For( ii = N Rows( dt ), ii >= 1, ii--,
If( IsMissing(dt:weight[ii])!=1, lastNmiss++ );
If( lastnmiss == 8, Break() );
);
lastNmiss = N Row( dt ) - ii;
n = N Row( dt );
biv = dt << Bivariate(
Y( :weight ),
X( :height ),
Where( Row() > (n - lastnmiss) )
);
回复:如何繪製列的最後 N 個值的圖表?這是對腳本的簡單修改@馬克貝利寫道,找到具有最後 x 個非零值的行
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt:weight[38] = 0;
last n = 0;
For( i = N Rows( dt ), i >= 1, i--,
If( :weight[i] > 0, last n++ );
If( last n == 5, Break() );
);
last n = N Row( dt ) - i;
n = N Row( dt );
biv = dt << Bivariate(
Y( :weight ),
X( :height ),
Where( Row() > (n - last n) )
);
回复:如何繪製列的最後 N 個值的圖表?@馬克貝利謝謝您的幫助。
我現在正在嘗試修改該代碼,以便它繪製最後 N 個非零值。 我的列中有幾行可能缺少值,並且只想繪製那些具有條目的行。 現在,如果過去 N 行(在我的例子中為 25 行)中只有一兩行非零,那麼它只會繪製這一兩行的圖表。
非常感謝您的幫助/反饋。 謝謝!
回复:如何繪製列的最後 N 個值的圖表?成功了! 謝謝。
必須針對具體細節稍作修改,但有效。
回复:如何繪製列的最後 N 個值的圖表?這是一個可以調整的雙變量和大類的示例:
Names Default to Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
last n = 5;
n = N Row( dt );
biv = dt << Bivariate(
Y( :weight ),
X( :height ),
Where( Row() > (n - last n) )
)
很簡單。