こんにちは、
私はさまざまなグラフ条件(オーバーレイの有無に関わらず、折り返しの有無にかかわらず)を処理するための汎用のグラフビルダー関数を書きたいと思います。最初のグラフと2番目のグラフでは線形または曲線近似が有効になり、3番目のグラフでは無効になります。
私は自分のスクリプトでより滑らかにするために何もしていないと思います。私の質問は、スクリプトを使ってスムーズにする方法を教えてください。
ありがとう、
ビル
Clear Globals();
Names Default To Here( 1 );
//Open the file
myFile = Pick File( "Choose File" );
dtIn = Open( myFile );
//Extract Serial number
for(i=1, i<=nrow(dtIn), i++,
dtIn:SERIAL_NUMBER[i] = regex(dtIn:SERIAL_NUMBER[i], "\w{8}");
);
dtIn:PE_COUNTS_DIE_LOGICAL_DIE_INDEX << set modeling type("Nominal");
DoGraph = function({dt, xCol, yCols, wrapCol, overlayCol},
{default local},
current data table(dt);
myExpr = expr(Graph Builder(
Size( 528, 490 ),
Show Control Panel( 0 ),
)
);
varExpr = expr(Variables());
elementExpr = expr(Elements());
pointsExpr = expr(Points( X ));
xExpr = expr(X(as column(expr(xCol))));
insert into(varExpr, name expr(xExpr), 1);
if( is string(yCols),
yExpr = expr(Y(:expr(yCols)));
insert into(varExpr, name expr(yExpr), 2);
nextIndex = 3;
,
is list(yCols),
nYCols = n items(yCols);
for(i=1, i<=nYCols, i++,
yStr = yCols[i];
yExpr = expr(Y(as column(expr(yStr)), Position( 1 )));
yExpr1 = eval expr(yExpr);
insert into(varExpr, name expr(yExpr1), i+1);
yPointExpr = expr(Y(expr(i)));
yPointExpr1 = eval expr(yPointExpr);
insert into(pointsExpr, name expr(yPointExpr1), i+1);
);
insert into(elementExpr, name expr(pointsExpr));
nextIndex = nYCols + 2;
,
Throw("Y must be string or list of strings");
);
if(length(wrapCol),
wrapExpr = expr(Wrap(:expr(wrapCol)));
insert into(varExpr, name expr(wrapExpr), nextIndex);
nextIndex++;
);
if(length(overlayCol),
overlayExpr = expr(Overlay(:expr(overlayCol)));
insert into(varExpr, name expr(overlayExpr), nextIndex);
nextIndex++;
);
insert into(myExpr, name expr(varExpr), 3);
insert into(myExpr, name expr(elementExpr), 4);
myExpr1 = expr(eval expr(myExpr));
eval(myExpr1);
);
xCol = "DRIVE_LEVEL_DATA_PE_AVE_DL_AVE";
yCol = "DIE_AGE_DIE_AGE";
hpList = {
"DRIVE_VITALS_AGE_SBS_THAT_PERFORMED_AGE_MEASUREMENT",
"DRIVE_VITALS_AGE_SBS_THAT_WENT_INTO_THE_HOLDING_PEN",
"DRIVE_VITALS_AGE_OCCURANCES_OF_SBS_SKIPPED_THE_HOLDING_PEN_BECAUSE_IT_WAS_FULL",
"DRIVE_VITALS_AGE_SBS_THAT_ABORTED_AGE_MEASUREMENT"
};
DoGraph(dtIn, xCol, "DIE_AGE_DIE_AGE", "SERIAL_NUMBER", "PE_COUNTS_DIE_LOGICAL_DIE_INDEX");
DoGraph(dtIn, xCol, "DRIVE_LEVEL_DATA_DIE_AGE_DL_AVE", "SERIAL_NUMBER", "");
DoGraph(dtIn, xCol, hpList, "SERIAL_NUMBER", "");Graph Builderの環境設定を操作して、滑らかな部分がそもそも表示されないようにすることができます。それとも、このようなことをすることができます:
NamesDefaultToHere(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
gb = dt << Graph Builder(
Show Control Panel( 0 ),
Variables( X( :weight ), Y( :height ) ),
Elements( Points( X, Y, Legend( 5 ) ), Smoother( X, Y, Legend( 6 ) ) )
);
Wait(2);
gbb = Report( gb )[Graph Builder Box( 1 )];
Print(gbb << Get Elements( 1, 1 ));
gbb << removeElement(1, 1, 2);
Print(gbb << Get Elements( 1, 1 ));こんにちはイアン、
ご回答ありがとうございます。 理想的には、スムーザーが最初からオンにならないようにしたいのです。 グラフビルダーの設定を操作する方法を考え出しましたが、見つけた関連する唯一のスクリッティングインデックス項目は "Ignore Platform Preferences(1)"でした。 私が気になる点の1つは、デフォルトの動作が3つのケースで異なることです。
どのスクリプティング同期がグラフビルダーの設定にアクセスできるかについての提案はありますか?
ありがとう、
ビル
ちょっと掘り下げた後、私は魔法の弾丸を見つけた。
プラットフォームの設定(グラフビルダー(Continuous Smoother(0)))を設定します。
イアンを正しい方向に向けてくれてありがとう。