Re: 여러 프레임 상자가 있는 가변성 차트에 동적으로 그래픽 스크립트를 추가하는 방법정확히 무엇을 시도하고 있는지 잘 모르겠지만 이와 같은 것이 작동할까요?
Names default to here( 1 );
dt = open("$SAMPLE_DATA\Big Class.jmp");
var_chart = dt << Variability Chart( Y( :height ), X( :sex ), By( :age ), stddevchart(0) );
summarize(dt, ages = by(:age));
var_rpt = var_chart << Report(); // this should just give a list of outlineboxes
for(i=1, i<=nitems(var_rpt), i++,
olb = var_rpt[i];
framebox = olb[FrameBox(1)];
framebox << Add Graphics Script(
Transparency( 0.5 );
Pen Color( "blue" );
Line([0,100], [62.5, 62.5]);
);
);Re: 여러 프레임 상자가 있는 가변성 차트에 동적으로 그래픽 스크립트를 추가하는 방법나는 일반적으로 프레임 상자 내부에서 완전히 생성되지 않는 한 그래픽 스크립트에서 변수를 사용하지 않습니다. 다음은 내 접근 방식의 예입니다.
Names Default To Here( 1 );
// open example
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
// launch variability chart
var_chart = dt << Variability Chart( Y( :height ), X( :sex ), By( :age ), stddevchart( 0 ) );
// get summary in same order as By groups
Summarize( dt, age = by( :age ), avg = Mean( :height ) );
var_rpt = var_chart << Report;
// iterate over list and add script using H Line() with literal argument
For( i = 1, i <= N Items( age ), i++,
Eval(
Substitute(
Expr(
var_rpt[i][FrameBox(1)] << Add Graphics Script(
Pen Color( "Red" ); H Line( aaa );
);
),
Expr( aaa ), avg[i]
)
)
);Re: 여러 프레임 상자가 있는 가변성 차트에 동적으로 그래픽 스크립트를 추가하는 방법원본에서 반환된 결과를 반복할 수 있습니다. 변동성 차트( 기준( ... ) ) 명령:
names default to here(1);
dt =
// Open Data Table: Big Class.jmp
// → Data Table( "Big Class" )
Open( "$SAMPLE_DATA/Cars.jmp" );
rpt = dt << Variability Chart(
Y( :Head IC),
X( :Make, :Model ),
Analysis Type( "Choose best analysis (EMS REML Bayesian)" ),
Show Range Bars( 0 ),
Show Cell Means( 0 ),
Std Dev Chart( 0 ),
Points Jittered( 1 ),
By( :NAME("D/P"), :Protection ),
);
//find groupings:
subt = dt << Summary( Group( :"D/P"n, :Protection ), Link to Original Data Table( 0 ) );
dps = subt:"D/P"n << Get Values;
protections = subt:protection << Get Values;
Close( subt, No Save );
For( t = 1, t <= N Items( dps ), t++,
Eval( eval Expr(
rows = dt << Get Rows Where( :NAME("D/P") == Expr( dps[t] ) & :Protection == Expr( protections[t] ) );
) );
subt = dt << Subset( Rows( rows ), Columns( :Make, :Model, :Wt ), Not Linked, Private );
sumt = subt << Summary( Group( :Make, Model ), Mean( :Wt ), Statistics Column Name Format( "Column" ), Link to Original Data Table( 0 ), Private );
Close( subt, No Save );
subt = sumt << Summary( Group( :Make ), Mean( :Wt ), Statistics Column Name Format( "Column" ), Link to Original Data Table( 0 ), Private );
Close( sumt, No Save );
category number = [=>];
category average = [=>];
For Each Row( subt,
category number[:Make] = :N Rows; // each least-significant category in a VariabilityPlot is exactly X=1 width on the hidden x-axis, starting at zero
category average[:Make] = :Wt
);
Close( subt, No Save );
tree = rpt[t] << Report;
Eval( Eval Expr(
tree[FrameBox( 1 )] << Add Graphics Script(
Local( {values = Expr( category average ), numbers = Expr( category number ), i, items, sum = 0},
items = numbers << Get Keys;
Pen Size( 2 );
Pen Color( "Blue" );
Summation( i = 1, N Items( items ),
Line( Eval List( {sum, values[items[i]]} ), Eval List( {sum += numbers[items[i]], values[items[i]]} ) );
0
)
)
)
) )
);Re: 여러 프레임 상자가 있는 가변성 차트에 동적으로 그래픽 스크립트를 추가하는 방법안녕 마크, 답장을 보내 주셔서 감사합니다! "aaa"의 전달된 값이 H Line() 및 Expr()에서 무엇인지 궁금합니다. 어디에도 할당된 것이 보이지 않으므로 그게 무엇인지 궁금합니다. 감사합니다!
Re: 여러 프레임 상자가 있는 가변성 차트에 동적으로 그래픽 스크립트를 추가하는 방법안녕 빈스,
응답해 주셔서 감사합니다. 하드 코딩된 62.5가 있는 것을 알 수 있습니다. 하지만 이를 동적으로 조정하여 :wt의 값으로 만드는 방법을 알고 계십니까?
Re: 여러 프레임 상자가 있는 가변성 차트에 동적으로 그래픽 스크립트를 추가하는 방법첫 번째 표현식은 템플릿일 뿐입니다. 식 'aaa'는 대체를 위한 자리 표시자입니다. 절대 평가되지 않습니다. Substitute()는 Expr(aaa)를 찾고 값을 대체합니다.
Re: 여러 프레임 상자가 있는 가변성 차트에 동적으로 그래픽 스크립트를 추가하는 방법알겠습니다. 설명 감사합니다. 호기심에서 jmp는 함수 내부의 값을 먼저 평가하지 않습니다. 나는 과거에 이것에 문제가 있었지만 파이썬 배경에서 온 행동을 이해하기 위해 무엇을 검색해야할지 알 수 없었습니다. 내 머릿속에서 H Line은 값을 대체하지 않고 avg[i]를 가져와야 하지만 오류가 발생합니다.
"'avg[ /*###*/i]' , avg[/*###*/i]의 액세스 또는 평가에서 잘못된 아래 첨자(숫자 또는 숫자 목록이어야 함)"
For( i = 1, i <= N Items( age ), i++,
Eval(
Expr(
var_rpt[i][FrameBox(1)] << Add Graphics Script(
Pen Color( "Red" ); H Line( avg[i] );
);
),
)
);도움과 설명에 감사드립니다. 감사합니다!
Re: 여러 프레임 상자가 있는 가변성 차트에 동적으로 그래픽 스크립트를 추가하는 방법표현식은 JMP 스크립팅 언어의 강력한 기능입니다. 나는 읽기를 권장합니다 선적 서류 비치 작동 방식과 사용 방법에 더 익숙해집니다.
마지막 접근 방식을 사용하는 올바른 방법은 다음과 같습니다.
Names Default To Here( 1 );
// open example
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
// launch variability chart
var_chart = dt << Variability Chart( Y( :height ), X( :sex ), By( :age ), stddevchart( 0 ) );
// get summary in same order as By groups
Summarize( dt, age = by( :age ), avg = Mean( :height ) );
var_rpt = var_chart << Report;
// iterate over the list and add script using H Line() with the literal argument
For( i = 1, i <= N Items( age ), i++,
Eval(
Eval Expr(
var_rpt[i][FrameBox(1)] << Add Graphics Script(
Pen Color( "Red" ); H Line( Expr( avg[i] ) );
);
);
)
);
여러 프레임 상자가 있는 가변성 차트에 그래픽 스크립트를 동적으로 추가하는 방법안녕하세요 여러분,
그래서 저는 "BY" 그룹으로 분할된 가변성 차트를 가지고 있습니다. https://community.jmp.com/t5/Discussions/How-to-add-Dynamic-horizontal-line-by-shared-y-axis-among/mp/622722 그래픽 스크립트가 데이터 테이블의 값을 기반으로 각 줄을 추가하는 방법을 이해합니다. 저는 이 방법을 더 많은 프레임박스가 있는 가변성 차트에 적용하려고 했는데 어떻게 해야 할지 모르겠습니다. 현재 내 생각에는 각 By를 for 루프에 넣고 그래픽을 각 프레임박스에 반복적으로 추가하는 것 같지만 프레임박스에 반복적으로 액세스하는 방법을 모르기 때문에 어떻게 해야 할지 혼란스럽습니다. 어떤 도움이라도 주시면 감사하겠습니다. 감사해요!
아래의 rpt를 사용하고 잠재적으로 for 루프를 추가하여
//Potential for loop?<BR /><BR />rpt = dt << Variability Chart(
Y( :Head IC),
X( :Make, :Model ),
Analysis Type( "Choose best analysis (EMS REML Bayesian)" ),
Show Range Bars( 0 ),
Show Cell Means( 0 ),
Std Dev Chart( 0 ),
Points Jittered( 1 ),
BY(:Name("D/P"))
);
<BR />//Subset data table by "By" condition to add the correct lines based on the condition.<BR />
tree = rpt << Report;
Eval( Eval Expr(
tree[FrameBox( 1 )] << Add Graphics Script(
Local( {values = Expr( category average ), numbers = Expr( category number ), i, items, sum = 0},
items = numbers << Get Keys;
Pen Size( 2 );
Pen Color( "Blue" );
Summation( i = 1, N Items( items ),
Line( Eval List( {sum, values[items[i]]} ), Eval List( {sum += numbers[items[i]], values[items[i]]} ) );
0
)
)
)
)
)데이터 혼합 및 정리