JSL: ottieni i valori X e Y dei grafici apertiCiao
Ho uno script che mi consente di selezionare in una casella combinata qualsiasi tabella di dati aperta

Se ho una tabella di dati che contiene grafici sotto di essa
come posso selezionare questi grafici?
il motivo è che voglio ottenere i nomi delle loro colonne X e Y
ad esempio nel primo grafico contrassegnato nell'immagine sopra voglio ottenere test e test2

questi grafici sono già aperti in JMP e non ho il controllo su di essi (in termini di modifica dello script che li crea)
ScriptingRi: JSL - ottieni i valori X e Y dei grafici apertiEcco un approccio che utilizza il JSL scritto dalla piattaforma (in questo caso, Graph Builder) per trovare gli elementi. Lo includo per illustrare quanto segue:
- espr ( )
- nome espr ( )
- arg ( )
- Testa ( )
- << ottieni oggetto scriptabile (questo restituisce l'oggetto Graph Builder da cui ottieni lo script)
Ti consigliamo di leggere su questi nella guida allo scripting se non li hai mai usati prima. Sono potenti ma richiedono un po' di pratica.
Dal momento che non ho inserito alcun condizionale (dovresti farlo ... controlla i nomi delle finestre, ecc.), fai quanto segue per assicurarti che lo script funzioni come scritto di seguito.
1) Chiudere report e grafici correnti.
2) Creare un grafico di Costruttore di grafici.
3) Eseguire lo script seguente in una finestra di script. (Potresti anche avvolgerlo in un ciclo esterno per scorrere più di una finestra del grafico. Ancora una volta, questo è solo un copione scheletrico inteso a illustrare l'idea generale.)
Saluti,
Brady
</CODE></P>
<PRE><CODE class=" language-jsl">Names Default To Here( 1 );
winList = Get Window List( Type( "reports" ) );
obj = winlist[1][Outline Box( 1 )] << Get Scriptable Object;
script = obj << get script;
i = 1;
//move through the script's arguments until you get to the Variables ( ) argument.
While( Head( exp = Arg( Name Expr( script ), i ) ) != Expr( Variables ), i++ );
xList = ylist = {};
nexp = name expr ( exp ); //optional; this allows us to type nexp instead of name expr ( exp ) in the code below.
//cycle through the arguments in the Variables ( ) section. If X ( ) or Y ( ) is
//encountered, insert into the appropriate list.
For( i = 1, i <= N Arg( nexp ), i++,
If( Head( var = Arg( nexp, i ) ) == Expr( X ), Insert Into( xList, Arg( Name Expr( var ), 1 ) ));
If( Head( var = Arg( nexp, i ) ) == Expr( Y ), Insert Into( yList, Arg( Name Expr( var ), 1 ) ));
);
Show( xList, yList );
Ri: JSL - ottieni i valori X e Y dei grafici apertiGrazie per l'aiuto
Ora voglio ottenere i valori XY (ciò che è contrassegnato in rosso) ma non sono sicuro di come accedere a quel valore
tutto quello che sono in grado di fare è ottenere il titolo (ciò che è contrassegnato in giallo).
Ho scoperto che con "get XML" invece di "get Text" mi danno anche i nomi, ma ci sono MOLTI dati lì e spero che ci sia un modo più semplice

Ri: JSL - ottieni i valori X e Y dei grafici apertiDato che non avevi il controllo della sessione JMP prima di eseguire il codice che vuoi scrivere, potresti provare questo tipo di approccio:
NamesDefaultToHere(1);
tableOfInterest = "Big Class";
allWindows = GetWindowList();
tableWindows = {};
for (w = 1, w <= NItems(allWindows), w++,
winTitle = allWindows[w] << GetWindowTitle;
if (StartsWith(winTitle,tableOfInterest) & (allWindows[w] << WindowClassName) == "Report", InsertInto(tableWindows, allWindows[w]));
);
for (w = 1, w <= NItems(tableWindows), w++,
Print(tableWindows[w] << GetWindowTitle);
);
Usa 'Help > Scripting Index' per vedere come funzionano i vari comandi.
Una volta che hai l'elenco dei rapporti figlio, puoi ispezionarli per estrarre quello che vuoi. Ma tieni presente che gli alberi dei report possono essere complessi, quindi potrebbe essere necessario un po' di lavoro per renderli sufficientemente robusti.