Attiva/disattiva la visibilità delle principali linee della griglia in Costruttore di grafici premendo un tastoMi piacerebbe configurare un componente aggiuntivo per attivare o disattivare la visibilità delle principali linee della griglia in Graph Builder (sia X che Y), ma sto lottando con il pezzo JSL ...Ho l'oggetto GB e SendToReport( .. Dispatch... codice, ma sembra volere il nome della variabile associato agli assi X e Y e il mio componente aggiuntivo non saprà cosa sono.
È fattibile?
Ecco cosa ho finora:
// 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 ) ) ) ) ) }
)
)Esplorazione e visualizzazione dei datiRe: Attiva/disattiva la visibilità delle principali linee della griglia nel Costruttore di grafici premendo un tastoCiao @BHarris ,
Che ne dici di usare la casella dell'asse per mostrare la griglia principale?
Se si desidera utilizzare l'invio per segnalare il messaggio, un'idea è utilizzare get variable message per ottenere la variabile.
// #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] ) )
)
);
Spero che funzioni per il tuo problema.
Re: Attiva/disattiva la visibilità delle principali linee della griglia nel Costruttore di grafici premendo un tastoQuesto è molto vicino!Mi piacerebbe che lo script attivasse e disattivasse lo stato della griglia ogni volta che viene eseguito, ma questo è solo in grado di attivare le griglie.Ho appena trascorso circa un'ora cercando di capire come leggere lo stato della griglia da un AxisBox, ma la documentazione diventa molto scarsa quando arrivo a "Label Row" ...
Come posso leggere lo stato attuale della rete principale?
Re: Attiva/disattiva la visibilità delle principali linee della griglia nel Costruttore di grafici premendo un tastoPotrebbero esserci modi migliori, ma un'opzione che potresti provare è inviare << get script to axisbox e ottenere lo Show Major Grid da quello. Se non è affatto visibile lì, dovresti essere in grado di ottenere il valore dalle proprietà degli utenti
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: Attiva/disattiva la visibilità delle principali linee della griglia nel Costruttore di grafici premendo un tastoMolto più vicino!Ora disattiva le linee della griglia per il primo riquadro dell'asse x e del primo asse y, ma non per tutti i riquadri degli assi su un grafico multiasse:

Come posso iterare su tutte le caselle degli assi?Ecco cosa ho finora:
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 );
);(ps.Non avrei mai capito la cosa "get script" o "arg( arg(" da solo.Mi sento come se fossi uno sceneggiatore semi-competente con 25 anni di esperienza, ma mi sento ancora abbastanza perso in JSL - molto difficile dire cosa sta facendo la maggior parte del tempo.)
Re: Attiva/disattiva la visibilità delle principali linee della griglia nel Costruttore di grafici premendo un tastoÈ possibile utilizzare << XPath per ottenere tutti i riferimenti AxisBox e quindi eseguire il ciclo su di essi e modificarli uno per uno o inviare lo stesso messaggio a tutti loro. Ciò potrebbe richiedere alcuni controlli aggiuntivi per non modificare gli assi che non si desidera modificare.
axisboxes = gb_rpt << XPath("//AxisBox");
<< Ottieni XML potrebbe essere utile quando controlli se c'è qualcosa di specifico in AxisBox che potrebbe aiutarti a restringere i riferimenti (charID potrebbe essere uno). È quindi possibile modificare la query XPath per utilizzarla e renderla più accurata.

Re: Attiva/disattiva la visibilità delle principali linee della griglia nel Costruttore di grafici premendo un tastoQuesto ha fatto!Ecco la soluzione per chiunque abbia bisogno di uno script per attivare/disattivare le griglie in tutti i grafici in 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 )
)
);Grazie a Jarmo e Yuichi per il loro aiuto!
****************************************
p.s.Non capisco affatto il suggerimento "<< Get XML" - ho provato a inserirlo in 4 posti diversi e non ho mai ottenuto alcun XML con "" (anche se ho ottenuto un sacco di XML fuori .. .).Come hai imparato a scrivere JSL così bene?
Re: Attiva/disattiva la visibilità delle principali linee della griglia nel Costruttore di grafici premendo un tastoHo imparato lo scripting solo tramite lo scripting (il modo in cui scrivo è che provo molte cose diverse, leggo la documentazione (per JSL di solito in questo ordine: Scripting Index, Scripting Guide, JMP Community, JSL Syntax Reference) e provo più cose e fallire molto , ma alla fine riesco quasi sempre a ottenere una sorta di soluzione funzionante).
Penso che tu possa inviare << get xml al livello analitico o di report dell'oggetto jmp. A volte puoi persino avvicinarti al riferimento corretto prima sottoscrivendo e poi usando << get xml, ma in questo caso l'ho appena inviato a gb. Di seguito è riportato un altro esempio con Big Class.jmp e dopo quello in cui ho inserito il tuo script. Di solito cancello il registro, eseguo << prendi la riga xml, faccio clic sul registro e quindi uso ctrl+f per cercare qualcosa (se so cosa sto cercando). Se devi esplorare un XML molto grande, potrebbe essere utile salvare l'xml come file .xml e aprirlo con un'applicazione che ha l'evidenziazione della sintassi per xml (notepad ++ di solito è sufficiente).

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");
ed è qui che inserirei <
