JSL - obtenir les valeurs X et Y des graphiques ouvertsBonjour
J'ai un script qui me permet de sélectionner dans une liste déroulante n'importe quelle table de données ouverte

Si j'ai un tableau de données contenant des graphiques
comment puis-je sélectionner ces graphiques ?
la raison est que je veux obtenir les noms de leurs colonnes X et Y
par exemple, dans le premier graphique marqué dans l'image ci-dessus, je veux obtenir test et test2

ces graphiques sont déjà ouverts dans JMP et je n'ai aucun contrôle sur eux (en termes d'édition du script qui les crée)
Accès aux donnéesPersonnalisation de masseRe: JSL - obtenir les valeurs X et Y des graphiques ouvertsVoici une approche qui utilise le JSL écrit par la plateforme (dans ce cas, Graph Builder) pour trouver les éléments. Je l'inclus pour illustrer ce qui suit :
- expression ( )
- nom expr ( )
- argument ( )
- tête ( )
- << obtenir un objet scriptable (cela renvoie l'objet Graph Builder à partir duquel vous obtenez le script)
Vous voudrez les lire dans le guide de script si vous ne les avez jamais utilisés auparavant. Ils sont puissants mais nécessitent un peu de pratique.
Puisque je n'ai mis aucune condition (vous voudriez le faire... vérifier les noms des fenêtres, etc.), procédez comme suit pour vous assurer que le script fonctionne comme indiqué ci-dessous.
1) Fermez les rapports et graphiques actuels.
2) Créez un graphique Graph Builder.
3) Exécutez le script ci-dessous dans une fenêtre de script. (Vous pouvez également envelopper cela dans une boucle externe pour parcourir plusieurs fenêtres graphiques. Encore une fois, il ne s'agit que d'un script schématique destiné à illustrer l'idée globale.)
Acclamations,
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 );
Re: JSL - obtenir les valeurs X et Y des graphiques ouvertsMerci pour l'aide
Je veux maintenant obtenir les valeurs XY (ce qui est marqué en rouge) mais je ne sais pas comment accéder à cette valeur
tout ce que je peux faire, c'est obtenir le titre (ce qui est marqué en jaune).
J'ai trouvé qu'avec "get XML" au lieu de "get Text", cela me donne aussi les noms, mais il y a BEAUCOUP de données là-bas et j'espère qu'il existe un moyen plus simple

Re: JSL - obtenir les valeurs X et Y des graphiques ouvertsÉtant donné que vous n'aviez pas le contrôle de la session JMP avant d'exécuter le code que vous souhaitez écrire, vous pouvez essayer ce type d'approche :
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);
);
Utilisez « Aide > Index des scripts » pour voir comment fonctionnent les différentes commandes.
Une fois que vous avez la liste des rapports enfants, vous pouvez les inspecter pour en extraire ce que vous voulez. Mais gardez à l’esprit que les arborescences de rapports peuvent être complexes, ce qui peut nécessiter un certain travail pour les rendre suffisamment robustes.