서로 다른 데이터 테이블의 Graph Builder 창 간에 로컬 데이터 필터 연결서로 다른 데이터 테이블에서 각각 "실행 번호" 및 "시간"을 필터링하는 로컬 데이터 필터가 있는 두 개의 그래프 빌더 창이 있다고 가정합니다.
동기화 상태를 유지하도록 두 개의 로컬 데이터 필터를 연결할 수 있습니까?
아니면 JSL을 사용하여 로컬 데이터 필터 #1에서 현재 설정을 가져와 로컬 데이터 필터 #2에 적용할 수 있습니까?
(1단계는 로컬 데이터 필터에 대한 참조를 가져오는 것 같습니다. 아직 방법을 찾지 못했습니다. 지금까지 가지고 있는 내용은 다음과 같습니다.
// get the last Graph Builder
win = Get Window List();
graphs = Filter Each({w}, win,
If(Length(w << XPath("//OutlineBox[@helpKey='Graph Builder']")) > 0, 1, 0)
);
last_gb = graphs[N Items(graphs)][OutlineBox("Graph Builder")] << Get Scriptable Object;
localDataFilter = last_gb << XPath("//OutlineBox[text()='Local Data Filter']");)
자동화 및 스크립팅Re: 서로 다른 데이터 테이블의 Graph Builder 창 간에 로컬 데이터 필터 연결테이블을 함께 연결한 다음 일종의 그룹화 열을 사용하여 테이블을 다른 그래프로 분리할 수 있습니까? 필터 변경 핸들러를 엉망으로 만드는 것보다 쉬울 수 있습니다.
Re: 서로 다른 데이터 테이블의 Graph Builder 창 간에 로컬 데이터 필터를 연결합니다.그렇지는 않습니다. 하나의 테이블은 실행 결과에 대한 높은 수준의 요약이며 해당 요약에서 문제를 식별한 다음 자세한 실행 플롯으로 전환하고 데이터 필터에서 특정 실행을 선택합니다.이 두 테이블을 병합하면 이러한 유형의 동작이 어떻게 가능하게 되는지 명확하지 않습니다.
Re: 서로 다른 데이터 테이블의 Graph Builder 창 간에 로컬 데이터 필터를 연결합니다.가상 조인은 어떻습니까?
Re: 서로 다른 데이터 테이블의 Graph Builder 창 간에 로컬 데이터 필터를 연결합니다.비슷한 게시물:
https://community.jmp.com/t5/Discussions/Virtual-linking-two-tables-via-JSL-scripting/mp/657682/highlight/true#M84705
Re: 서로 다른 데이터 테이블의 Graph Builder 창 간에 로컬 데이터 필터를 연결합니다.가상 링크의 발송/수신 기능이 필터 설정을 브로드캐스트하도록 로컬이 아닌 데이터 필터가 필요하다고 생각합니다.
제 경우에는 너무 느렸습니다.
Re: 서로 다른 데이터 테이블의 Graph Builder 창 간에 로컬 데이터 필터를 연결합니다.전체 필터를 복사하려면 복사/붙여넣기를 사용할 수 있습니다.
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
gb1 = dt << Graph Builder(
Show Control Panel( 0 ),
Variables( X( :height ), Y( :weight ), Overlay( :sex ) ),
Elements( Points( X, Y, Legend( 1 ) ), Smoother( X, Y, Legend( 2 ) ) )
);
gb2 = dt << Graph Builder(
Show Control Panel( 0 ),
Variables( X( :sex ), X( :age, Position( 1 ) ), Y( :weight ), Overlay( :sex ) ),
Elements( Bar( X( 1 ), X( 2 ), Y, Legend( 3 ) ) )
);
df1 = gb1 << Local Data Filter(
Add Filter(
columns( :age ),
Where( :age == 15 ),
Display( :age, N Items( 6 ) )
)
);
df1 << copy local data filter();
gb2 << paste local data filter();
Re: 서로 다른 데이터 테이블의 Graph Builder 창 간에 로컬 데이터 필터 연결나는 아이디어가 마음에 들지만 실행하려고 할 때 충돌이 발생하기 때문에 분명히 귀하의 솔루션에 이해하지 못하는 것이 있습니다.
지금까지 내가 가진 것은 다음과 같습니다.
Names Default to Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
gb1 = dt << Graph Builder(
Graph Spacing( 5 ),
Variables( X( :sex ), Y( :height ) ),
Elements( Points( X, Y, Legend( 5 ) ) )
);
gb2 = dt << Graph Builder(
Graph Spacing( 5 ),
Variables( X( :sex ), Y( :height ) ),
Elements( Points( X, Y, Legend( 5 ) ) )
);
df1 = gb1 << Local Data Filter(
Add Filter(
columns( :sex ),
Where( :sex == "M" ),
Display( :sex, N Items( 2 ) )
)
);
df2 = gb2 << Local Data Filter(
Add Filter(
columns( :sex ),
Where( :sex == "F" ),
Display( :sex, N Items( 2 ) )
)
);
broadcastFilter = Function( {},
//get the script
filterScript = df1 << get Script();
//search for the "Add filter" part
For( i = 1, i <= N Arg( filterScript ), i++,
If( Head( Arg( filterScript, i ) ) == Expr( Add Filter() ),
filterExpression = Arg( filterScript, i )
)
);
// broadcast it to the other Data filter
Eval(
Substitute(
Expr(
df2 << Start Over << _filter_
),
Expr( _filter_ ), Name Expr( filterExpression )
)
);
);
// activate the Filter Change Handler
rs = df1 << Make Filter Change Handler( broadcastFilter );"broadcastFilter에 0개의 매개변수()가 있지만 1개의 인수(18)가 제공되었습니다"라는 오류가 있습니다.무슨 말인지 아세요?마지막 줄에 인수를 제공하고 있다고 생각하지 않습니다 ...
Re: 서로 다른 데이터 테이블의 Graph Builder 창 간에 로컬 데이터 필터를 연결합니다.오. 죄송합니다.
broadcastFilter = Function( {x}, Re: 서로 다른 데이터 테이블의 Graph Builder 창 간에 로컬 데이터 필터를 연결합니다.결국 로컬 데이터 필터로 다시 전환하고 첫 번째 데이터 필터에 필터 변경 처리기를 추가했습니다.
꽤 잘 작동합니다.
rs=
필터 변경 처리기
broadcastFilter=Function({x}, // Make Filter Change Handler need a function with 1 Argument
//get the script
filterScript = DataFilter1 << get Script();
//search for the "Add filter" part
For( i = 1, i <= N Arg( filterScript ), i++,
If( Head( Arg( filterScript, i ) ) == Expr( Add Filter() ),
filterExpression = Arg( filterScript, i )
)
);
// broadcast it to the other Data filter
Eval( Substitute( Expr( Datafilter2 << Start Over << _filter_ ), Expr( _filter_ ),
Name Expr( filterExpression ) ) );
// activate the Filter Change Handler
rs = DataFilter1 << Make Filter Change Handler( broadcastFilter); // will call broadcastFilter() with 1 Argument: # of selected rows
편집:인수 x가 추가되고 주석 처리되었습니다. 기능
broadcastFilter=Function({},- 인수 없이 - 작동하지 않습니다.
Re: 서로 다른 데이터 테이블의 Graph Builder 창 간에 로컬 데이터 필터를 연결합니다.와우, 작동합니다!나는 그 코드가 무엇을 하는지 이해했으면 좋았을 텐데...
마지막 질문 - 이미 그래프 빌더 창이 로컬 데이터 필터와 함께 열려 있다고 가정하면 gb .jsl 개체 변수를 가져올 수 있는 방법을 알고 있습니다.
win = Get Window List();
graphs = Filter Each({w}, win, If(Length(w << XPath("//OutlineBox[@helpKey='Graph Builder']")) > 0, 1, 0) );
gb = graphs[N Items(graphs)][OutlineBox("Graph Builder")] << Get Scriptable Object;... 하지만 gb 개체 변수에서 df1 개체 변수를 어떻게 가져올 수 있습니까?(100가지를 시도한 느낌...)
Re: 서로 다른 데이터 테이블의 Graph Builder 창 간에 로컬 데이터 필터를 연결합니다.한 가지 옵션은 그래프 빌더에 사용하는 것과 유사한 아이디어를 사용하는 것입니다.
df = (gb << top parent)[Outline Box("Local Data Filter")] << Get Scriptable Object;
로컬 데이터 필터는 그래프 빌더 내부에 없으므로 먼저 상위 레벨로 이동해야 합니다(이 경우 << 상위 상위를 사용함). 속성 helpKey 및 값 데이터 필터와 함께 XPath를 사용하는 것이 좀 더 강력한 솔루션일 수 있으며 다음과 같습니다.
(gb << top parent) << XPath("//OutlineBox[@helpKey='Data Filter']")
편집: 동일한 창에 여러 데이터 필터가 있을 가능성이 있는 경우 << 상위 부모를 사용하는 것보다 시작점의 정의를 좀 더 구체적으로 지정해야 할 수 있습니다.