JSL에 의해 열 속성에 사양 제한 설정 - 플롯에 선이 표시되지 않음안녕
열 속성에 사양 제한(USL/LSL)을 할당한 다음 열의 플롯을 만드는 스크립트가 있습니다.
플롯에 그려진 한계선을 확인합니다. 테이블에는 한계가 올바르게 설정되어 있지만 플롯에는 표시되지 않습니다.
스크립트를 실행한 후 이 열에 동일한 플롯을 수동으로 그리면 다시 선이 없습니다.
열 사양 속성 창을 열면 제한이 표시되고 '기준선 표시'가 켜져 있습니다.
'적용'을 누른 다음 다시 플롯하는 경우에만 예상대로 플롯의 선을 볼 수 있습니다. 하지만 스크립트로 작동시킬 수 없습니다 ..
어떤 생각?
(JMP PRO 15 사용)


고급 통계 모델링자동화 및 스크립팅데이터 접근대량 맞춤화품질 및 프로세스 엔지니어링윈도우Re: JSL에 의해 열 속성에 사양 제한 설정 - 플롯에 선이 표시되지 않음짐, 트릭을 해주셔서 감사합니다.
Re: JSL에 의해 열 속성에 사양 제한 설정 - 플롯에 선이 표시되지 않음이 JSL은 트릭을 수행해야합니다
// Your code
datacolnames = res_thk_specs:colname << get values;
specExpr = Expr(
Column( Res_Thk_Data, name ) <<
Set Property(
"Spec Limits",
{LSL( Expr( lower ) ), USL( Expr( upper ) ),
TARGET( Expr( target ) ), Show Limits( 1 )}
)
);
For( i = 1, i <= N Rows( RES_THK_SPECS ), i++,
name = Column( RES_THK_SPECS, "COLNAME" )[i];
lower = Column( RES_THK_SPECS, "LSL" )[i];
upper = Column( RES_THK_SPECS, "USL" )[i];
target = Column( RES_THK_SPECS, "TARGET" )[i];
_unit_ = Column( RES_THK_SPECS, "UOM" )[i];
If( Contains( datacolnames, name ),
Eval( Eval Expr( specExpr ) )
);
If( Contains( datacolnames, name ),
Column( Res_Thk_Data, name ) << Set Property( "Units", eval( _unit_ ) )
);
);Re: JSL에 의해 열 속성에 사양 제한 설정 - 플롯에 선이 표시되지 않음짐, 응답해 주셔서 감사합니다.나는 달렸고 제한이 테이블에 추가됩니다.문제가 있는 부분은 열 속성에 단위를 추가하는 것입니다.내 코드에서 주석을 제거하면 단위 열 속성이 채워지지만 원하는 인치 또는 파운드 값으로 채워지지 않습니다.대신 둘 다 List 값으로 채워집니다.데이터 테이블 셀에서 텍스트를 전송하기 위해 표현식 문이나 평가 문에서 누락된 부분이 명확하지 않습니다.도움이 될 것입니다
감사합니다.
Re: JSL에 의해 열 속성에 사양 제한 설정 - 플롯에 선이 표시되지 않음다음은 코드를 사용하여 작동하는 간단한 예입니다.여전히 데이터 테이블에서 작동하지 않는 경우 열 이름과 일치하지 않는 항목을 찾습니다.
Names Default To Here( 1 );
res_thk_specs = New Table( "thelookup",
Add Rows( 2 ),
New Column( "UOM",
Character,
"Nominal",
Set Values( {"inches", "lbs"} ),
Set Display Width( 48 )
),
New Column( "TARGET",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [60, 115] )
),
New Column( "USL",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [70, 172] )
),
New Column( "LSL",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [50, 60] ),
Set Display Width( 89 )
),
New Column( "colname",
Character,
"Nominal",
Set Values( {"height", "weight"} ),
Set Display Width( 0 )
)
);
res_thk_data = New Table( "thedata",
Add Rows( 5 ),
New Column( "height",
Numeric,
"Continuous",
Format( "Fixed Dec", 5, 0 ),
Set Values( [59, 61, 55, 66, 52] )
),
New Column( "weight",
Numeric,
"Continuous",
Format( "Fixed Dec", 5, 0 ),
Set Selected,
Set Values( [95, 123, 74, 145, 64] )
)
);
// Your code
datacolnames = res_thk_specs:colname << get values;
specExpr = Expr(
Column( Res_Thk_Data, name ) <<
Set Property(
"Spec Limits",
{LSL( Expr( lower ) ), USL( Expr( upper ) ),
TARGET( Expr( target ) ), Show Limits( 1 )}
)
);
//unitExpr = Expr(
// column ( Res_Thk_Data, name ) << Set Property(
// "Units", { _unit_ }
// )
//);
For( i = 1, i <= N Rows( RES_THK_SPECS ), i++,
name = Column( RES_THK_SPECS, "COLNAME" )[i];
lower = Column( RES_THK_SPECS, "LSL" )[i];
upper = Column( RES_THK_SPECS, "USL" )[i];
target = Column( RES_THK_SPECS, "TARGET" )[i];
_unit_ = Column( RES_THK_SPECS, "UOM" )[i];
If( Contains( datacolnames, name ),
Eval( Eval Expr( specExpr ) )
);
// If( Contains( datacolnames, name ),
// Eval( Eval Expr( unitExpr ) )
// );
);Re: JSL에 의해 열 속성에 사양 제한 설정 - 플롯에 선이 표시되지 않음매우 유사한 방법을 사용하여 제한 테이블에서 제한을 가져와 열 속성에 사양 제한을 추가합니다.한도 테이블의 값을 기반으로 단위를 업데이트하기 위해 비슷한 방법을 사용하고 싶었습니다.현재 코드 쇼에서 주석 처리되었지만 실행할 때 원하는 단위 대신 단위 속성으로 "목록" 값을 얻습니다.이것이 구문 문제라고 생각하지만 지금까지 eval expr 문의 올바른 구문을 찾지 못했습니다.
Re: JSL에 의해 열 속성에 사양 제한 설정 - 플롯에 선이 표시되지 않음중괄호를 사용하는 것이 올바른 구문인 것 같기 때문에 중괄호 없이 왜 그렇게 동작하는지 잘 모르겠습니다. JMP 도움말 - 열 속성
col << Set Property( "propertyName", {argument list} );
중괄호 없이 명령을 실행하고 열 속성을 확인하면 괜찮아 보이지만 열 속성 복사를 사용하면 첫 번째 인수만 얻게 되기 때문에 JMP는 일부 정보를 내부적으로 저장해야 합니다. 인수):
Add Column Properties(
Set Property("Notes", "Explore data adventurously"),
Set Property("Spec Limits", LSL(50))
)
그런 다음 사양 제한 열 속성에서 적용을 누르면 인수가 올바른 목록으로 업데이트됩니다.
Add Column Properties(
Set Property("Notes", "Explore data adventurously"),
Set Property("Spec Limits", {LSL(50), USL(150), Show Limits(1)})
)Re: JSL에 의해 열 속성에 사양 제한 설정 - 플롯에 선이 표시되지 않음감사해요 ! 실제로 중괄호를 추가하면 문제가 해결되었습니다. 
이유를 설명할 수 있습니까?
Re: JSL에 의해 열 속성에 사양 제한 설정 - 플롯에 선이 표시되지 않음차트가 처음 표시된 후 제한을 적용하는 것 같습니다.제한은 차트가 처음 표시될 때 그려지며, 해당 지점 이후에 제한이 추가되면 표시하려면 차트를 다시 그려야 합니다.
Re: JSL에 의해 열 속성에 사양 제한 설정 - 플롯에 선이 표시되지 않음구문이 약간 벗어난 것 같습니다. 사양 제한 뒤에 {}를 추가해야 합니다. 아래 스크립트를 참조하십시오. 적용을 누르지 않으면 체중이 작동하지 않고 키가 작동합니다.
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
Column(dt, "weight") << Set Property("Spec Limits", LSL(50), USL(150), Show Limits(1));
Column(dt, "height") << Set Property("Spec Limits", {LSL(50), USL(100), Show Limits(1)});
gb = dt << Graph Builder(
Size(534, 456),
Show Control Panel(0),
Variables(X(:weight), Y(:height)),
Elements(Points(X, Y, Legend(4)), Smoother(X, Y, Legend(5)))
);Re: JSL에 의해 열 속성에 사양 제한 설정 - 플롯에 선이 표시되지 않음신속한 답변에 감사드립니다! 열 속성에서 사양 제한이 올바르게 설정되기 때문에 코드가 실제로 관련이 없다고 가정했습니다.
LSL 및 USL을 설정하고 한계(1)를 표시하지만 올바르게 설정되어 있어도 플롯에 표시되지 않습니다.
고정된 숫자로 직진 코드를 사용해도 동일하게 동작합니다..
Column(DATA_DT,param) << Set Property( "Spec Limits", LSL( 0.31 ),USL(0.34),Show Limits(1) );

'적용'을 누르고 그래프를 다시 그린 후에만 선이 표시됩니다.
Re: JSL에 의해 열 속성에 사양 제한 설정 - 플롯에 선이 표시되지 않음안녕 @shlomi_bakish ,
JSL 코드의 예를 제공할 수 있습니까? 이는 발생한 문제를 진단하는 데 도움이 될 수 있습니다. 그동안 코드의 이 부분은 열에 대한 사양 제한을 설정하고 그래프 작성을 위해 사양 제한이 켜져 있는지 확인하는 방법의 예입니다.
//Turn on spec lines for graphs
dt = Current Data Table( ); //just a way of setting the current data table to the variable dt
<BR />dt_ColNames = dt << Get Column Names( string ); //Gets the column names from the data table
<BR />For( i = 1, i <= N Items( dt_ColNames ), i++,<BR />
spec = Column( dt, dt_ColNames[i] ) << Get Property( "Spec Limits" ); //This gets the Boolean spec property of each column
<BR />//now, for each column perform the task of assigning the spec limits<BR /> If( Is Empty( spec ) == 0,
LSL = Try( spec["LSL"], . );
USL = Try( spec["USL"], . );
Target = Try( spec["Target"], . );
Eval(
Substitute(
Expr(
Column( dt, dt_ColNames[i] ) << Set Property(
"Spec Limits",
{LSL( __LSL__ ), USL( __USL__ ), Target( __Target__ ), Show Limits( 1 )}
),
),
Expr( __LSL__ ), LSL,
Expr( __USL__ ), USL,
Expr( __Target__ ), Target
)
);//This whole Eval() is wrapping a Substitution(), which wraps an expression Expr(). <BR /> //The variables that will be substituted are __LSL__ and so on. The Show Limits (1) checks the box to turn on the limits as reference lines.
);
);이것은 올바른 방향으로 나아가는 데 도움이 될 것입니다. 그러나 코드를 보고 수행 중인 작업을 이해하지 않고는 정확한 요구 사항을 해결하기 위해 보다 구체적으로 설명하기가 어렵습니다.
도움이 되었기를 바랍니다!,
DS