嗨,
我正在嘗試編寫一個通用圖形構建器函數來處理不同的圖形條件(有或沒有疊加,有或沒有換行等),以下腳本適用於我的三種情況,但更順暢(不確定它是否是線性或曲線擬合)是第一個和第二個圖形,而不是第三個圖形。
我不認為我正在做任何事情來打開我腳本中的平滑器。我的問題是如何通過腳本關閉平滑器?
謝謝,
法案
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", "");您可以操縱圖形構建器首選項,這樣就不會出現更平滑的情況。或者你可以做這樣的事情:
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 ));嗨伊恩,
感謝您的答复。 理想情況下,我想首先防止更順暢。 我試圖弄清楚如何操作圖形構建器首選項,但我找到的唯一相關的scriting索引項是“忽略平台首選項(1)”,這似乎沒有任何影響。 我擔心的一件事是我的三種情況之間的默認行為有所不同。
有關腳本synatax可以訪問圖形構建器首選項的任何建議嗎?
謝謝,
法案
經過一點挖掘後我找到了靈丹妙藥:
設置平台首選項(圖形構建器(Continuous Smoother(0)));
謝謝你指出我正確的方向伊恩。