열 데이터를 기반으로 참조선 자동화안녕하세요, 저는 JSL을 처음 접했고 특정 열의 값을 기반으로 그래프에서 여러 참조선을 자동으로 생성하는 방법을 고민하고 있습니다. 현재 Y축에는 하나의 변수(:Signal)를, X축에는 세 개의 변수(:Zone, :Target 및 :Condition)를 그래프로 표시하고 있습니다. 각 (:Target) 변수에는 특정 (:과거 신호)가 있으며 (:Target)의 (:과거 신호)를 참조선으로 자동 그래프로 표시하는 방법을 찾고 싶습니다. 내가 가지고 있는 코드는 h line()을 통해 기록 신호 값을 수동으로 추가하여 수행되지만 이상적으로 스크립트는 해당 기록 신호를 기반으로 각 (:target)에 대한 참조 라인을 추가합니다. 감사합니다!
Variability Chart(
Y( :Signal ),
X( :Zone, :Target, :Condition ),
Analysis Type( "Choose best analysis (EMS REML Bayesian)" ),
Show Range Bars( 0 ),
Show Cell Means( 0 ),
Std Dev Chart( 0 ),
Mean Diamonds( 1 ),
SendToReport(
Dispatch(
{"Variability Chart for Signal"},
"Variability Chart",
FrameBox,
{Frame Size( 969, 240 ),
Add Graphics Script(
2,
Description( "" ),
Pen Color( "RED" );
//Target 2
H Line( 0, 2, 234 );
//Target 3
H Line( 2, 4, 670 );
//Target 1
H Line( 4, 6, 463 );
)}
)
)
);
스크립팅Re: 열 데이터를 기반으로 참조선 자동화현재 데이터 구조가 주어지면 여기에 기록 신호를 자동화하는 한 가지 방법이 있습니다.
Names Default To Here( 1 );
dt = Current Data Table();
targ1 = Mean( :Historical Signal[dt << get rows where( :Target == "Target 1" )] );
targ2 = Mean( :Historical Signal[dt << get rows where( :Target == "Target 2" )] );
targ3 = Mean( :Historical Signal[dt << get rows where( :Target == "Target 3" )] );
Variability Chart(
Y( :Signal ),
X( :Zone, :Target, :Condition ),
Analysis Type( "Choose best analysis (EMS REML Bayesian)" ),
Show Range Bars( 0 ),
Show Cell Means( 0 ),
Std Dev Chart( 0 ),
Mean Diamonds( 1 ),
SendToReport(
Dispatch(
{"Variability Chart for Signal"},
"Variability Chart",
FrameBox,
{Frame Size( 969, 240 ), Add Graphics Script(
2,
Description( "" ),
Pen Color( "RED" );
//Target 2
H Line( 0, 2, targ2 );
//Target 3
H Line( 2, 4, targ3 );
//Target 1
H Line( 4, 6, targ1 );
)}
)
)
);Re: 열 데이터를 기반으로 참조선 자동화Hey txnelson, 응답해 주셔서 감사합니다. 이것이 제가 찾던 바로 그 것입니다! 내가 궁금한 유일한 다른 점은 그래프의 좌표를 수동으로 입력하는 대신 h line() 코드가 해당하는 :Target과 일치하도록 할 수 있는지 여부입니다. 앞으로 저는 다른 양의 대상을 추가할 예정이며 항상 같은 순서는 아닙니다.
Re: 열 데이터를 기반으로 참조선 자동화수행해야 하는 모든 작업은 값과 순서를 얻은 다음 필요한 JSL을 생성하는 방법을 파악하는 것입니다.다음은 최종 스크립트를 생성하기 위한 올바른 방향으로 시작하는 간단한 예입니다.
Names Default To Here( 1 );
dt = Current Data Table();
// Find the number of targets and get the means
Summarize( dt, targs = by( :Zone, :Target ), targMeans = Mean( :Historical Signal ) );
vc = Variability Chart(
Y( :Signal ),
X( :Zone, :Target, :Condition ),
Analysis Type( "Choose best analysis (EMS REML Bayesian)" ),
Show Range Bars( 0 ),
Show Cell Means( 0 ),
Std Dev Chart( 0 ),
Mean Diamonds( 1 )
);
// Create the JSL to submit to generate the Target Lines
theExpr =
"Report( vc )[FrameBox( 1 )] << add graphics Script(
Description( \!"\!" ),
Pen Color( \!"RED\!" );";
For( ii = 1, ii <= N Items( targMeans ), ii++,
theExpr = theExpr || "H Line( " || Char( (ii - 1) * 2 ) || "," || Char( (ii - 1) * 2 + 2 )
|| "," || Char( targMeans[ii] ) || ");";
);
Eval( Parse( theExpr ) );