Script per modificare uno scriptHo uno script che prende un grafico di contorno standard e riorganizza i grafici in colonne.
Va da

A

La posizione delle caselle di testo impedisce il funzionamento corretto dello script.
C'è un modo diverso per ottenere il risultato? In caso contrario, posso modificare in qualche modo lo script attuale per ordinarlo? Mi chiedevo se lo script padre potesse eseguire una ricerca/sostituzione sullo script figlio per effettuare alcune modifiche?
clear Globals();
Delete Symbols();
window = Get Window List();
wName = window << Get Window Title;
nWindows = N Items( window );
For( i = nWindows, i > 0, i--,
If( Contains( wName[i], "Contour Plot" ),
obj = window[i]["Contour Plot?"] << Get Scriptable Object;
Show(obj);
obj << Save Script for All Objects;
obj << Close Window;
Break();
);
);
spt = Window( "Script Window" );
spt << Bring Window To Front;
spt2 = spt[Script Box(1)];
spt2 << Get Line Text( 3 );
spt2 << Set Line Text (3, "Line Up Box( N Col( 3 ), Spacing( 2 ),");
spt2 << run();
spt2 << Close Window;
Automazione e scriptingRe: Script per modificare uno scriptSe puoi usare JMP18 puoi semplicemente modificare il layout dal triangolo rosso di livello più alto

Non ho più accesso a JMP17 e non sono sicuro di poter ottenere risultati simili in JMP18 per testare diverse opzioni, ma potresti prendere in considerazione quelle caselle di testo (aumentare ncol a 6 e nasconderle / mantenere ncol a 3 e rimuoverle). Potresti anche determinare quale colonna viene utilizzata come colonna by e ricostruire la piattaforma utilizzando tali informazioni SENZA utilizzare By (eseguirla più volte e formattarla come desideri).
Re: Script per modificare uno scriptcurrent report()["Conto?"]
grazie, molto utile:)
Re: Script per modificare uno scriptÈ possibile raccogliere gli script degli OutlineBox , incapsulare ogni (informazione Where + grafico) all'interno di una V List Box e disporre le V List Box tramite la Lineup Box :
// ask every Outline Box for a scriptable object
obs = (current report() << xpath("//OutlineBox")) << get scriptable object;
// ask the scriptable objects for a script
scripts = obs << get Script;
// prepare a template LineUp Box
myExpr = Expr( Line Up Box( N Col( 3 ), Spacing( 2 )));
// wrap the scripts with V List Box and put them into the template
For each({script}, scripts,
Eval (Substitute(Expr(Insert Into(myExpr, Expr(V list Box (_content_)))), Expr(_content_), Name Expr(script)))
);
// use the template in a new window
New Window("overview", myExpr);
Re: Script per modificare uno scriptPiù vicino all'approccio originale con lo ... Script per tutti gli oggetti:
// there is no
// myScript = (current report()[OutlineBox(1)] << get scriptable object) << get Script for All Objects;
// : (
(current report()[OutlineBox(1)] << get scriptable object) << save Script for All Objects;
sw = Window( "Script Window" );
myScript = Parse(sw[Script Box(1)] << get text);
//--------------------------
<BR />// prepare a Template for the Line Up Box
myExpr = Expr( Line Up Box( N Col( 3 ), Spacing( 2 )));<BR />
// take the V list Box - it contains the Countour Plot commands
myScript = (Extract Expr(myScript, V List Box (Wild List())));
// cycle through Contour Plot commands, "wrap" with V List Box and insert into template
For each({command}, Name Expr(myScript), // an I-DONT-CARE of VLBs
wrapped = Insert (Expr(V list Box ()), Name Expr(command));
Insert Into(myExpr, Name Expr(wrapped))
);
// generate the report
New Window("overview", myExpr);
Grazie infinite al programmatore della funzione For Each !!
meraviglioso : )
Funziona con qualsiasi espressione , non solo con elenchi, array associativi e matrici : )

Re: Script per modificare uno scriptL'ho fatto in modo un po' diverso. Ho generato i diagrammi di contorno dalla tabella dati Semiconductor Capability, e poi ho eseguito il seguente script
Clear Globals();
Delete Symbols();
window = Get Window List();
wName = window << Get Window Title;
nWindows = N Items( window );
For( i = nWindows, i > 0, i--,
If( Contains( wName[i], "Contour Plot" ),
obj = window[i]["Contour Plot?"] << Get Scriptable Object;
Break();
)
);
script = Char( obj << get bygroup script );
obj << Close Window;
Eval( Parse( "New Window(\!"Contours\!",lineupbox(ncol(3), spacing(2)," || script || "));" ) );
per ottenere questo output

Re: Script per modificare uno scriptAh, giusto, lo script get bygroup() era già lì. In effetti, è molto più semplice in questo modo : )
(current report()["Contour?"] << get scriptable object) << get by group script
È piuttosto robusto.
Funziona con JMP17 (parlando con il primo grafico)

... e JMP18 (parlando alla Piattaforma di Gruppo):

Se si utilizza il valore di ritorno del comando report, bisogna fare attenzione a ottenere lo script solo 1x:
cp =Contour Plot( ... ,By() ); // returns a list
//cp << get script; // 1 script per plot (N times, message sent to a list)<BR />// cp << get bygroup script; // returns the by group Script N times (message sent to a list)
cp[1] << get bygroup script; // 1x :)</img>
Re: Script per modificare uno script
@hogi ha scritto:
... È piuttosto robusto. Funziona con JMP17 (parlando con il primo grafico)... e JMP18 (parlando con la piattaforma di gruppo)
Oh, questa affermazione si riferisce semplicemente al modo in cui ottenere lo script groupby:
(current report()["Contour?"] << get scriptable object) << get by group script
non per la cosa completa...
In JMP 18 e versioni successive, lo script restituisce un GroupPlatform e Lineup Box non consente più di controllare il layout.
Quindi puoi saltare questa parte esterna e usare direttamente GroupPlatform per controllare il layout (opzioni del triangolo rosso menzionate da @jthi ).
Struttura ad albero tramite Lineup Box (raggruppa per script)

[selezionato Outlinebox = 1° grafico]
Struttura ad albero tramite gli approcci precedenti:
