スクリプトを使用して、複数の散布図を1つのテーブルにするのに役立ちますか?こんにちは皆さん。
私が作成したこのスクリプトを使用して、複数の散布図をテーブルに印刷できます。
Names Default To Here( 1 );
dt = Open( "$Sample_Data/Big Class.jmp" );
dt = Current Data Table();
For( i = 4, i <= N Cols( dt ), i++,
Column( dt, i ) << data type( numeric );
Column( dt, i ) << set modeling type( continuous );
);
address = Current Data Table();
Scatterplot Matrix(
Y(
:Column(address, 4),
:Column(address, 5)
),
X( :Column(address, 2) ),
Fit Line( 0 ),
SendToReport
(
Dispatch
(
{},
"1100",
ScaleBox,
{
Add Ref Line( :Column(address, 4)[2], "Solid", "Medium Dark Blue", "LSL", 1 ),
Add Ref Line( :Column(address, 4)[3], "Solid", "Medium Dark Blue", "USL", 1 )
}
),
Dispatch
(
{},
"1101",
ScaleBox,
{
Add Ref Line( :Column(address, 5)[2], "Solid", "Medium Dark Blue", "LSL", 1 ),
Add Ref Line( :Column(address, 5)[3], "Solid", "Medium Dark Blue", "USL", 1 )
}
),
Dispatch(
{},
"Scatterplot Matrix Plot",
FrameBox,
{Frame Size( 600, 200 )}
),
)
);
以下のスクリプトのような[for]関数を使用してみました。
Names Default To Here( 1 );
dt = Open( "$Sample_Data/Big Class.jmp" );
dt = Current Data Table();
For( i = 4, i <= N Cols( dt ), i++,
Column( dt, i ) << data type( numeric );
Column( dt, i ) << set modeling type( continuous );
);
address = Current Data Table();
For( i = 4, i <= 5, i++,
Scatterplot Matrix(
Y(
:Column(address, i)
),
X( :Column(address, 2) ),
Fit Line( 0 ),
SendToReport
(
Dispatch
(
{},
"1100",
ScaleBox,
{
Add Ref Line( :Column(address, i)[2], "Solid", "Medium Dark Blue", "LSL", 1 ),
Add Ref Line( :Column(address, i)[3], "Solid", "Medium Dark Blue", "USL", 1 )
}
),
Dispatch(
{},
"Scatterplot Matrix Plot",
FrameBox(i),
{Frame Size( 600, 200 )}
)
)
);
);
ただし、スクリプトは互いにグラフを作成しました。
[for]関数を使用してテーブルに複数のスキャッターを作成するのを手伝ってください... T ^ T
分析データ表スクリプティングRe:スクリプトを使用して複数の散布図を1つのテーブルにするのを手伝っていただけますか?For()ループを使用する場所の提案は、実際には必要ありません。 私があなたを正しく理解している場合、必要なのは、複数のY列と1つのx列を持つ散布図行列を作成することです。 これを行うには、散布図コードをループ処理する必要はありません。Yに必要な列のリストを作成し、そのリストをプラグインするだけです。 次に、各グラフにスペック制限を追加することについて、必要な制限を持つ独立したテーブルを作成してから、制限をデータテーブルにコピーすることをお勧めします。 その後、データが処理されると、さまざまなマトリックスに制限が自動的に適用されます。
Names Default To Here( 1 );
dt = Open( "$Sample_Data/Blood pressure.jmp" );
// Create a list of all of the columns one wants for Y values in the
// scatterplot matrix
colNamesList = dt << get column names( continuous );
// Here is the limits table. This can be just a saved data table that is
// opened in the script. It does not have to be a table built in a script
dtLimits = New Table( "Limits",
Add Rows( 9 ),
New Column( "Variable",
Character,
"Nominal",
Set Values( {"BP 8M", "BP 12M", "BP 6M", "BP 8W", "BP 12W", "BP 6W", "BP 8F", "BP 12F", "BP 6F"} )
),
New Column( "LSL",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [175, 175, 175, 171, 173, 171, 172, 174, 172] )
),
New Column( "USL",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [180, 185, 185, 187, 190, 180, 185, 188, 186] )
),
New Column( "Target", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [., ., ., ., ., ., ., ., .] ) ),
New Column( "Show Limits",
Numeric,
"Nominal",
Format( "Best", 12 ),
Set Values( [1, 1, 1, 1, 1, 1, 1, 1, 1] )
)
);
// Add the limits from the limits data table to the data table with the
// data values in it
For( i = 1, i <= N Rows( dtLimits ), i++,
Eval(
Substitute(
Expr(
Column( dt, dtLimits:Variable[i] ) << set property(
"spec limits",
{LSL( __LSL__ ), USL( __USL__ ), show limits( 1 )}
)
),
Expr( __LSL__ ), dtLimits:LSL[i],
Expr( __USL__ ), dtLimits:USL[i]
)
)
);
// Create the Scatterplot Matrix
dt << Scatterplot Matrix(
Y(
Eval( colNamesList )
),
X( :Column( dt, 2 ) ),
Fit Line( 0 ),
SendToReport( Dispatch( {}, "Scatterplot Matrix Plot", FrameBox, {Frame Size( 600, 200 )} ), )
);
Re:スクリプトを使用して複数の散布図を1つのテーブルにするのを手伝っていただけますか?あなたのアドバイスは私にとても役立ちます。
ジム博士、ありがとう!