키 입력을 통해 Graph Builder에서 주요 그리드 선의 가시성을 전환합니다.Graph Builder에서 주요 격자선(X와 Y 모두)의 가시성을 토글하도록 추가 기능을 구성하고 싶지만 JSL 부분에 어려움을 겪고 있습니다...GB 객체와 SendToReport( .. Dispatch... 코드가 있지만 X축과 Y축과 연결된 변수 이름을 원하는 것 같고 내 추가 기능은 그것들이 무엇인지 알지 못합니다.
이것이 가능합니까?
지금까지 내가 가진 것은 다음과 같습니다.
// steps to get last_gb scriptable object...<BR /><BR />// send setting change<BR />last_gb << SendToReport(
Dispatch(
{},
"myXaxis",
ScaleBox,
{ Label Row (Show Major Grid( not(Label Row (Show Major Grid ) ) ) ) ) }
),
Dispatch(
{},
"myXYaxis",
ScaleBox,
{ Label Row (Show Major Grid( not(Label Row (Show Major Grid ) ) ) ) ) }
)
)데이터 탐색 및 시각화Re: 그래프 빌더에서 키 입력을 통해 주요 격자선의 가시성을 전환합니다.안녕하세요 @BHarris ,
축 상자를 사용하여 주요 그리드를 표시하는 것은 어떻습니까?
메시지를 보고하기 위해 보내기를 사용하려는 경우 한 가지 아이디어는 가변 메시지 가져오기를 사용하여 변수를 가져오는 것입니다.
// #1 Example for Axis Box
gb_rpt = gb_ob << Report();
gb_rpt[axis box( 1 )] << Show Major Grid( 1 );
gb_rpt[axis box( 2 )] << Show Major Grid( 1 );
// #2 Example for send to report
var1 = gb_ob << Get Variable( 1 );
var2 = gb_ob << Get Variable( 2 );
Eval(
Substitute(
Expr(
gb_ob << send to report(
Dispatch(
{},
_var_,
ScaleBox,
{Label Row( Show Major Grid( 1 ) )}
)
)
),
Expr( _var_ ), Eval( Char( var1[1] ) )
)
);
나는 그것이 당신의 문제에 효과가 있기를 바랍니다.
Re: 그래프 빌더에서 키 입력을 통해 주요 격자선의 가시성을 전환합니다.이것은 매우 가깝습니다!스크립트가 실행될 때마다 그리드 상태를 켜고 끄는 것을 원하지만 그리드를 켤 수만 있습니다.방금 AxisBox에서 그리드 상태를 읽는 방법을 알아내려고 약 한 시간을 보냈지만 "레이블 행"에 도달하면 문서가 매우 희박해집니다...
주요 그리드의 현재 상태를 어떻게 읽을 수 있습니까?
Re: 그래프 빌더에서 키 입력을 통해 주요 격자선의 가시성을 전환합니다.더 좋은 방법이 있을 수 있지만 시도할 수 있는 한 가지 옵션은 << get 스크립트를 axisbox로 보내고 여기에서 Show Major Grid를 가져오는 것입니다. 거기에 전혀 표시되지 않으면 사용자 속성에서 값을 가져올 수 있어야 합니다.
axis_script = axisbox << get script();
cur_gridvalue = Try(
axis_script["Label Row"]["Show Major Grid"];
Print("Grid");
, // not found
Arg(Arg(Get Preference(Major Grid Lines)));
Print("Preference");
);
Re: 그래프 빌더에서 키 입력을 통해 주요 격자선의 가시성을 전환합니다.훨씬 더 가까이!이제 첫 번째 x축 및 첫 번째 y축 상자에 대한 눈금선을 끕니다. 그러나 다축 플롯의 모든 축 상자는 아닙니다.

모든 축 상자를 어떻게 반복할 수 있습니까?지금까지 내가 가진 것은 다음과 같습니다.
Names Default To Here( 1 );
win = Get Window List();
//Find graph builder windows
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_rpt = gb << Report();
gb_axis1 = gb_rpt[AxisBox( 1 )];
gb_axis2 = gb_rpt[AxisBox( 2 )];
axis_script = gb_axis1 << get script();
cur_gridvalue = Try(
axis_script["Label Row"]["Show Major Grid"], // not found
Arg( Arg( Get Preference( Major Grid Lines ) ) )
);
If( cur_gridValue,
gb_axis1 << Show Major Grid( 0 );
gb_axis2 << Show Major Grid( 0 );
,
gb_axis1 << Show Major Grid( 1 );
gb_axis2 << Show Major Grid( 1 );
);(추신.나는 "get script"나 "arg( arg(")를 스스로 알아내지 못했을 것입니다.25년 경력의 어느 정도 유능한 스크립터인 것 같지만 여전히 JSL에서 상당히 길을 잃은 느낌입니다. 많은 시간 동안 무엇을 하고 있는지 말하기가 매우 어렵습니다.)
Re: 그래프 빌더에서 키 입력을 통해 주요 격자선의 가시성을 전환합니다.<< XPath를 사용하여 모든 AxisBox 참조를 가져온 다음 이를 반복하고 하나씩 수정하거나 모든 참조에 동일한 메시지를 보낼 수 있습니다. 변경하지 않으려는 축 상자를 수정하지 않으려면 몇 가지 추가 검사가 필요할 수 있습니다.
axisboxes = gb_rpt << XPath("//AxisBox");
<< Get XML은 AxisBox에 참조 범위를 좁히는 데 도움이 되는 특정 항목이 있는지 확인할 때 유용할 수 있습니다(charID는 하나일 수 있음). 그런 다음 XPath 쿼리를 수정하여 이를 사용하고 더 정확하게 만들 수 있습니다.

Re: 그래프 빌더에서 키 입력을 통해 주요 격자선의 가시성을 전환합니다.그랬어!Graph Builder의 모든 플롯에서 눈금선을 켜거나 끄는 스크립트가 필요한 사용자를 위한 솔루션은 다음과 같습니다.
Names Default To Here( 1 );
win = Get Window List();
//Find graph builder windows
graphs = Filter Each( {w}, win,
If( Length( w << XPath( "//OutlineBox[@helpKey='Graph Builder']" ) ) > 0,
1,
0
)
);
gb = graphs[N Items( graphs )][Outline Box( "Graph Builder" )] << Get Scriptable Object;
gb_rpt = gb << Report();
gb_axis1 = gb_rpt[AxisBox( 1 )];
axis_script = gb_axis1 << get script();
cur_gridvalue = Try(
axis_script["Label Row"]["Show Major Grid"], // not found
Arg( Arg( Get Preference( Major Grid Lines ) ) )
);
axisboxes = gb_rpt << XPath( "//AxisBox" );
For Each( {anAxisBox,anIndex}, axisboxes,
If( cur_gridValue,
anAxisBox << Show Major Grid( 0 ),
anAxisBox << Show Major Grid( 1 )
)
);도움을 주신 Jarmo와 Yuichi에게 감사드립니다!
****************************************
추신.나는 "<< XML 가져오기" 팁을 전혀 이해하지 못합니다. 4개의 다른 위치에 넣어 보았지만 ""가 포함된 XML을 가져오지 못했습니다(많은 XML을 가져오기는 했지만.. .).JSL 스크립트를 그렇게 잘 작성하는 방법을 어떻게 배웠습니까?
Re: 그래프 빌더에서 키 입력을 통해 주요 격자선의 가시성을 전환합니다.저는 스크립팅만으로 스크립팅을 배웠습니다(제가 스크립팅하는 방식은 제가 다양한 것을 시도하고 문서를 읽고(JSL의 경우 일반적으로 스크립팅 인덱스, 스크립팅 가이드, JMP 커뮤니티, JSL 구문 참조의 순서로) 더 많은 것을 시도하고 많이 실패 , 그러나 결국 나는 거의 항상 일종의 작업 솔루션을 얻습니다).
<< get xml을 jmp 개체의 분석 또는 보고서 레이어로 보낼 수 있다고 생각합니다. 때로는 먼저 첨자를 붙인 다음 << get xml을 사용하여 올바른 참조에 더 가까워질 수도 있지만 이 경우에는 그냥 gb로 보냈습니다. 아래는 Big Class.jmp가 있는 다른 예와 그 후 내가 스크립트에 배치한 위치입니다. 일반적으로 나는 로그를 지우고 << get xml 라인을 실행하고 로그를 클릭한 다음 ctrl+f를 사용하여 무언가를 검색합니다(내가 찾고 있는 것을 알고 있는 경우). 매우 큰 XML을 탐색해야 하는 경우 xml을 .xml 파일로 저장하고 xml에 대한 구문 강조 표시가 있는 일부 응용 프로그램에서 여는 것이 도움이 될 수 있습니다(일반적으로 notepad++이면 충분함).

Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt << Select Rows([1, 2]) << Hide and Exclude(1) << Clear Select;
gb = dt << Graph Builder(
Size(528, 456),
Show Control Panel(0),
Variables(X(:weight), Y(:height), Overlay(:sex)),
Elements(Points(X, Y, Legend(9)), Smoother(X, Y, Legend(10)))
);
// Report(gb) << Get Xml; // works also on report
gb << Get XML; // run just this line to see xml in log or use Write() (write is the cleanest option)
// Write(gb << Get XML);
// xml_str = gb << get xml;
// show(xml_str);
where_tb = Report(gb) << XPath("//TextBox[contains(text(), 'Where(')]");
where_tb << Text Color("Blue"); // usually used to hide where text << Set Visibility("Collapse");
여기에서 << Get XML을 스크립트에 배치하고 한 번 실행하고 xml을 확인한 다음 일반적으로 << Get XML을 기성품 스크립트로 남겨둘 필요가 없으므로 코드에서 줄을 제거합니다.
