JSL : Comment scénariser une mise à jour graphique avec Combo box et boutons Next/PrevSalut tout le monde,
Je travaille sur un plus grand ensemble de code JSL et je souhaite y ajouter des fonctionnalités afin que l'utilisateur puisse parcourir différentes vues - quelque chose comme ce que l'on peut faire lors du cycle à travers les différents composants de la plate-forme PCA, voir l'écran tiré ci-dessous.

Je sais que j'ai besoin de quelques zones de liste déroulante avec les colonnes pertinentes de la table de données, mais je ne sais pas comment mettre à jour automatiquement le graphique comme dans la plate-forme PCA ou comment appeler correctement la zone de bouton Suivant. Je voudrais également ajouter une boîte de boutons Précédent afin que l'utilisateur puisse revenir plus facilement en arrière dans la vue.
Si quelqu'un a des suggestions ou des idées sur la façon de mettre en œuvre cela, j'apprécierais l'aide. Je n'ai pas réussi à rechercher cette fonctionnalité ou à en trouver beaucoup dans l'index de script ou le guide de script que j'ai.
Merci!,
DS
MISE À JOUR : Je me rapproche et j'ai un code qui parcourt la liste dans la zone de liste déroulante, donc c'est assez simple (voir ci-dessous). Ce qui me pose encore problème, c'est la mise à jour automatique du graphique. L'intention est que lorsque l'utilisateur clique sur Next ou Prev, la variable y change automatiquement dans le graphique. BTW, j'utilise le fichier Boston Housing.jmp pour le tester.
Names Default To Here( 1 );
dt = Data Table( "Boston Housing" );
xlist = dt << Get Column Names( String );
nw = New Window( "interactive Graph builder", V List Box( vlb1 = V List Box(), vlb2 = V List Box() ) );
xcol = 1;
ycol = 2;
lbcontent = V List Box(
Lineup Box( N Col( 5 ),
Text Box( "Select Params", <<SET font="" size=""></SET>
ScriptRe : JSL : comment créer un script de mise à jour graphique avec la zone de liste déroulante et les boutons Suivant/PrécédentSalut, je cherche de l'aide supplémentaire à ce sujet?
J'essaie de n'afficher qu'un certain nombre de colonnes sur ma xlist au lieu de toutes les colonnes, qui sont placées dans n'importe quel ordre aléatoire
xlist= {"crim", "nox", "radial"} ;
En utilisant le script ci-dessus, il ne trace que les 3 premières colonnes, qui dans ce cas "crim", "zn" et "indus" et non celles que j'ai mentionnées ci-dessus.
Existe-t-il une solution à ce problème ?
Merci.
Re : JSL : comment créer un script de mise à jour graphique avec la zone de liste déroulante et les boutons Suivant/PrécédentMise à jour : OK, j'avais donc besoin de lire un peu plus dans mon guide de script sur Append, Prepend, Sib Append et Sib Prepend. Après avoir lu cela, il s'agissait de déterminer à quelle boîte de conteneur je devais ajouter le graphique mis à jour. Ainsi, lorsqu'il s'agit d'avoir d'autres conteneurs dans une fenêtre, vous devrez peut-être utiliser la commande Sib Prepend(). C'est logique maintenant que je le vois.
Le JSL ci-joint fait tout ce que je voulais, si quelqu'un est intéressé.
Merci!,
DS
Re : JSL : comment créer un script de mise à jour graphique avec la zone de liste déroulante et les boutons Suivant/PrécédentSalut @ian_jmp ,
J'espère que vous pourrez aider à faire fonctionner correctement ce script lorsque j'aurai plus d'éléments dans la nouvelle fenêtre. J'ai pu prendre mon script conceptuel qui fonctionnait seul et le déplacer dans un script plus grand qui partitionne les données et affiche les résultats. Je joins mon code JSL sous forme de fichier, ce serait peut-être plus facile de cette façon. Il ouvre le Boston Housing et vous pouvez sélectionner le tableau de données, puis les facteurs X et la réponse Y et définir une partie de validation et le nombre maximum de fractionnements à tenter.
Le code fonctionne pour générer la sortie que je veux (ci-dessous):

Mais, lorsque vous parcourez les paramètres, cela réorganise la disposition de la fenêtre en ceci :

J'aimerais conserver la même mise en page que la première capture d'écran, mais les options Préfixe et Ajout ne conservent pas la bonne mise en page. Toute aide est très appréciée.
Merci!,
DS
Re : JSL : comment créer un script de mise à jour graphique avec la zone de liste déroulante et les boutons Suivant/PrécédentSalut @ian_jmp ,
Cela a fait exactement l'affaire, merci! Je publierai le code de travail ci-dessous et le marquerai comme la solution, car ce code fait exactement ce que je voulais quand j'ai commencé à travailler sur cette partie.
Merci!,
DS
Code mis à jour avec Prepend au lieu d'Append.
Names Default To Here( 1 );
dt = Open("$sample_data/Boston housing.jmp");
//dt = Data Table( "Boston Housing" );
xlist = dt << Get Column Names( String );
gb_default = Expr(
Graph builder( Show Control Panel( 0 ), Variables( X( Column( dt, 1 ) ), Y( Column( dt, 2 ) ) ), Elements( Points( X, Y, Legend( 3 ) ) ) )
);
gb_change = Expr(
Graph builder( Show Control Panel( 0 ), Variables( X( Column( dt, xcol ) ), Y( Column( dt, ycol ) ) ), Elements( Points( X, Y, Legend( 3 ) ) ) )
);
nw = New Window( "Interactive Graph",
gb = gb_default;
lbcontent = Lineup Box( N Col( 5 ),
Spacer Box( Size( 1, 0 ) ),
Text Box( "X", <<JUSTIFY text=""></JUSTIFY>Re : JSL : comment créer un script de mise à jour graphique avec la zone de liste déroulante et les boutons Suivant/PrécédentEssayez 'Prepend' plutôt que 'Append'.
Re : JSL : comment créer un script de mise à jour graphique avec la zone de liste déroulante et les boutons Suivant/PrécédentSalut tout le monde,
J'ai donc pu retrouver un fil de discussion précédent ici où @Mme aidé un autre utilisateur à faire quelque chose de similaire. J'ai pu travailler à partir de cette idée et la modifier pour qu'elle fonctionne plus ou moins comme je le souhaitais. ci-dessous est le code permettant cette fonctionnalité, à l'exception d'un "défaut" mineur.
Le code permet à l'utilisateur de sélectionner les éléments X, Y à représenter graphiquement et met à jour le graphique lorsque les zones de liste déroulante sont modifiées ou lorsque les boutons Prev/Next sont enfoncés. Donc, à cet égard, le code fonctionne comme prévu.
Après avoir effectué une modification pour tracer quelque chose de différent, la zone de contenu du générateur de graphiques permute les positions avec la sélection Zone de ligne qui contient les zones de liste déroulante/zones de boutons. J'aimerais conserver la boîte Lineup qui contient les options pour modifier le graphique en bas de la fenêtre et je ne sais pas comment faire cela.
Toutes les suggestions sur la façon de faire fonctionner cela sont très appréciées! (code à la fin).
Merci!,
DS
Fenêtre de démarrage (avec option ci-dessous) :

Fenêtre mise à jour après avoir apporté une modification aux zones de liste déroulante X ou Y, ou aux boutons Prev/Next :

Voici le code :
Names Default To Here( 1 );
//dt = open("$sample_data\Boston Housing.jmp");//In case the file isn't already open.<BR />
dt = Data Table( "Boston Housing" );
xlist = dt << Get Column Names( String );
gb_default = Expr(
Graph builder( Show Control Panel( 0 ), Variables( X( Column( dt, 1 ) ), Y( Column( dt, 2 ) ) ), Elements( Points( X, Y, Legend( 3 ) ) ) )
);
gb_change = Expr(
Graph builder( Show Control Panel( 0 ), Variables( X( Column( dt, xcol ) ), Y( Column( dt, ycol ) ) ), Elements( Points( X, Y, Legend( 3 ) ) ) )
);
nw = New Window( "Interactive Graph",
gb = gb_default;
lbcontent = Lineup Box( N Col( 5 ),
Spacer Box( Size( 1, 0 ) ),
Text Box( "X", <<JUSTIFY text=""></JUSTIFY>Re : JSL : comment créer un script de mise à jour graphique avec la zone de liste déroulante et les boutons Suivant/PrécédentSalut @DonMcCormack ,
Oui, cela ferait certainement l'affaire, mais je veux une mise à jour automatique du graphique lorsque l'utilisateur clique sur les boutons Suivant/Précédent ou sélectionne un ensemble différent de variables dans la zone de liste déroulante. Essentiellement, j'essaie de recréer la fonctionnalité de la plate-forme PCA, mais de la généraliser pour l'incorporer dans d'autres scripts.
DS
Re : JSL : comment créer un script de mise à jour graphique avec la zone de liste déroulante et les boutons Suivant/PrécédentPourquoi ne pas utiliser le sélecteur de colonne ?