後で使用するために、グラフをスクリプトとして保存することがよくあります。グラフにデータの除外が含まれるまで、すべてがうまく機能します。たとえば、(1)ワクチンを受けた患者と(2)受けなかった患者の回復のグラフを作成します。2つのグラフは同じです(同じ変数、軸、ラベル、およびスタイル)。ただし、(1)(バイナリ)「ワクチンなし」条件が除外され、(2)「ワクチン」条件が除外されます。
データの除外が変更されると、グラフは自動的に更新されることを理解しています(これはバグではなく機能です)。グラフのスクリプトにデータの除外を保存する方法はありますか 、それで、スクリプトを実行するときはいつでも、グラフが作成されたときにデータの除外に基づく結果が表示されますか
これにはさまざまな方法があります。 グラフスクリプトを新しいデータテーブルに対して実行する場合、スクリプトは、JSLがデータを通過するスクリプトに追加され、そのときに選択を行う必要があることを要求します。 タスクが同じデータテーブル設定でグラフを再実行できるようにするだけの場合は、「行の状態」タイプの新しい列を作成し、実行時に行の状態を保存する必要があります。グラフの新しい行の状態の列。 次に、グラフィックスクリプトを拡張して、行の保存状態を新しい列からデータテーブルの行状態にコピーし、グラフを実行するだけです。
速やかなご返信ありがとうございます!
1)これを行う方法の説明を指摘できますか?「このスクリプトでは、データを処理し、その時点で選択を行うスクリプトにJSLを追加する必要があります。」
2)上記の解決策によって同じデータセットで除外を指定することもできる場合は、これ以上話さないでください。それ以外の場合は、これを行う方法の説明を教えてください:「次に、グラフィックスクリプトを追加して、行の保存の状態を新しい列からデータテーブルの行の状態にコピーし、グラフを実行します」
または、グラフの一部としてローカルデータフィルターを使用する方法もあります。これにより、ユーザーは1つのグループから別のグループに簡単に切り替えることができます。
これは、行の状態列を保存してから使用して、データテーブルを元のグラフが実行されたときの状態にリセットする例です。
names default to here(1);
// Open a sample data table
dt = open("$SAMPLE_DATA/big class.jmp" );
// Set some exclusions and row coloring
dt << select where(:age == 12 & :sex == "F" );
dt << hide and exclude;
dt << color by column(:age);
// Run the graph to get the results desired
Graph Builder(
Size( 522, 486 ),
Show Control Panel( 0 ),
Variables( X( :age ), Group X( :sex ), Overlay( :age ) ),
Elements( Bar( X, Legend( 8 ) ) ),
SendToReport( Dispatch( {}, "400", LegendBox, {Set Title( "" )} ) )
);
// To save the data table status at the time of the graph, simply
// create a new row state column, and copy the row states to it
dt << new column("My Row States", rowstate);
dt:My Row States << copy from row states;
// To illustrate what would needed to be added to the Graph Script
// to recreate the environment it was originally run in, I will first
// clear all of the row states to bring the table back to the
// default blank row states
dt << clear row states;
// Now all that has to be done, is to copy the rowstates from the row state
// column back to the data table row states, and then rerun the graph
dt:My Row States << copy to row states;
Graph Builder(
Size( 522, 486 ),
Show Control Panel( 0 ),
Variables( X( :age ), Group X( :sex ), Overlay( :age ) ),
Elements( Bar( X, Legend( 8 ) ) ),
SendToReport( Dispatch( {}, "400", LegendBox, {Set Title( "" )} ) )
);
これがあなたの回答に対する完全な答えではないと思いますが、あなたが他に何を求めているのかよくわかりませんでした。 あなたが求めていることを言い直して、より具体的に教えていただけますか?