<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Salut tout le monde,
J'ai un script où l'une des sorties est un tracé bivarié (XY) utilisant la plate-forme bivariée. Il trace essentiellement la valeur d'un paramètre d'un appareil sur l'axe y par rapport au temps sur l'axe x. Ces parties ont une valeur d'ID commune dans une colonne de la table de données source.
Maintenant, la plate-forme a déjà la fonctionnalité où si vous cliquez sur un marqueur, la ligne sur laquelle le marqueur est basé est sélectionnée dans la table de données (les autres marqueurs de la zone d'affichage deviennent flous). Ce que je veux, c'est que lorsqu'un utilisateur clique sur un marqueur, tous les autres marqueurs avec la même valeur d'ID soient également mis en surbrillance (afin que l'utilisateur puisse voir comment cet appareil s'est comporté au fil du temps). J'ai juste du mal à trouver un moyen de le faire. Y a-t-il accès au code de gestion des événements qui existe déjà pour la plate-forme (c'est-à-dire ce qui permet de sélectionner les lignes lorsque l'utilisateur clique sur un marqueur, ou plusieurs lignes lorsque l'utilisateur clique et fait glisser un rectangle dans la fenêtre de tracé) ?
Toute aide à ce sujet serait grandement appréciée.
Merci.
Pour votre information, une autre approche utilisant le gestionnaire d'état de ligne :
Noms par défaut ici ( 1 ) ;
// Table
dt = Nouveau tableau ( "Sélection d'ID bivariée" ,
Ajouter des lignes ( dix ) ,
Nouvelle colonne ( "IDENTIFIANT" , Numérique , "Nominal" , Format ( "Meilleur" , 12 ) , Définir les valeurs ( [ 2014 , 2011 , 2012 , 2013 , 2014 , 2011 , 2013 , 2012 , 2011 , 2014 ] ) ) ,
Nouvelle colonne ( "X" , Numérique , "Continu" , Format ( "Meilleur" , 12 ) , Définir les valeurs ( [ 1 , 2 , 3 , 4 , 5 , 6 , sept , 8 , 9 , dix ] ) ) ,
Nouvelle colonne ( "O" , Numérique , "Continu" , Format ( "Meilleur" , 12 ) , Définir les valeurs ( [ 20 , 21 , 25 , 28 , 30 , 31 , 33 , 36 , 37 , 40 ] ) ) ,
Définir les colonnes d'étiquettes ( : IDENTIFIANT )
) ;
// Fonction de gestionnaire d'état de ligne
selectMatchingID = Fonction ( { X } ,
// Récupère les lignes actuellement sélectionnées
lignes sélectionnées = [] ;
je = 1 ;
Pour chaque ligne (
Si ( Choisi ( État de la ligne () ) ,
lignes sélectionnées = V Concat ( lignes sélectionnées , je )
) ;
je ++ ;
) ;
// S'il y a une sélection, "étendez-la" à toutes les lignes requises
Si ( N rangée ( lignes sélectionnées ) > 0 ,
élargiSelectedRows = [] ;
Pour ( je = 1 , je <= N rangée ( lignes sélectionnées ) , je ++,
cetID = : IDENTIFIANT [ lignes sélectionnées [ je ]] ;
matchingRows = dt << getRowsWhere ( : IDENTIFIANT == cetID ) ;
élargiSelectedRows = V Concat ( élargiSelectedRows , matchingRows ) ;
) ;
dt << selectRows ( élargiSelectedRows ) ;
) ;
) ;
// Affecte le gestionnaire à la table
rsh = dt << MakeRowStateHandler ( selectMatchingID ) ;
// Essayez-le avec Graph Builder
dt << Générateur de graphiques (
Taille ( 530 , 454 ) ,
Afficher le panneau de configuration ( 0 ) ,
variables ( X ( : X ) , Oui ( : Oui ) ) ,
Éléments ( Points ( X , Oui , Légende ( 5 ) ) , Plus lisse ( X , Oui , Légende ( 6 ) ) )
) ;
Salut tout le monde,
J'ai trouvé un moyen de le faire qui fonctionne. Fondamentalement, il vous suffit de créer un script graphique et d'y écrire du code qui obtient les ID des lignes sélectionnées, puis d'utiliser une instruction select where pour faire correspondre toutes les lignes avec cet ID. Cela fonctionne également si vous cliquez et faites glisser un certain nombre de points dans la fenêtre Bivariée. Exemple de code ci-dessous.
xParam ="Column Name 1 Here";
yParam = "Column Name 2 Here";
idParam = "Column Name 3 Here";
//tableRef = data table reference
bivPlatform = Bivariate(
Y( Eval(yParam) ),
X( Eval(xParam) ),
);
bivReport = bivPlatform << Report;
bivFrame = bivRawReport[FrameBox( 1 )]; //Assign reference to framebox
// Add Graphics script to select all rows with matching ID when one row is selected on the graph
bivFrame << Add Graphics Script( 2, //Order graphics script is run with respect to other elements in Frame box (Not really needed here)
//Get selected IDs
selectedIDMatrix = tableRef:idParam[ ( tableRef << Get Selected Rows() ) ];
//Get unique IDs (optional I guess)
idArray = Associative Array(selectedIDMatrix);
uniqueIDMatrix = idArray << Get Keys;
//Select other datapoints with matching IDs
tableRef << Select Where( Contains( As List(uniqueIDMatrix), As Column(tableRef, idParam) ) );
);
Salut Scwise,
Merci pour cela et j'ai hâte de disposer de cette fonctionnalité lors de la mise à niveau vers JMP 12.
Je cherchais en quelque sorte cette fonctionnalité juste dans la zone d'affichage bivariée. Pour utiliser votre exemple ci-dessus, j'aimerais cliquer sur un point de données pour 2014 et mettre en surbrillance tous les points de 2014. J'espère qu'il existe une solution de script pur là-bas.
En tout cas merci encore pour votre réponse.
nkelleh,
Merci pour la question sur la possibilité de sélectionner quelque chose dans un graphique bivarié Fit X By Y, mais voyez ensuite tous les points correspondants dans le tableau de données mis en surbrillance qui ont des ID similaires au point sélectionné.Bien qu'il puisse encore y avoir une réponse plus élégante "script à partir de zéro" à ce que vous voulez faire, j'ai trouvé un moyen simple d'utiliser la nouvelle fonctionnalité JMP 12 Application Builder qui permet d'utiliser un graphique comme filtre de données.Ensuite, j'espère que vous pourrez utiliser des parties de ce script prêt à l'emploi dans votre travail actuel, ou peut-être simplement être en mesure d'utiliser cette capacité prête à l'emploi telle quelle.Notez que j'utilise la version JMP 12.1 pour Mac.
Dans ce cas, nous avons créé un tableau de données simple comme vous l'avez décrit avec trois colonnes : ID, X et Y, avec plusieurs ID ayant plusieurs lignes de différentes mesures X et Y. Nous avons ensuite combiné la table de données, puis une distribution des colonnes dans une seule fenêtre (Combinez les fenêtres dans JMP pour obtenir une vue de rapport personnalisé) ci-dessous afin que vous puissiez voir notre configuration initiale.

Ensuite, nous avons créé un graphique montrant l'ajustement bivarié de Y par X.À ce stade, si vous sélectionnez un point, vous sélectionnez en réalité uniquement en fonction des coordonnées X et Y.Faire apparaître l'étiquette d'identification de ce point n'est pas un problème, mais cela ne fera que masquer (sélectionner) ce point exact dans votre tableau de données.Le problème est donc que le bivarié rechercherait des correspondances basées uniquement sur des coordonnées X et Y similaires, et non sur des ID communs.Voir la prochaine vue de rapport personnalisé.
Alors j'ai pensé que nous pourrions peut-être en faire un processus en deux étapes très simple en créant un graphique "assistant" à côté de la bivariée qui me permettrait ensuite de sélectionner tous les points d'intérêt ID en un seul clic.Pour ce faire, j'ai créé une distribution pour l'ID (que j'ai transformée en un type de colonne de données nominale pour une meilleure capacité de sélection), puis j'ai désactivé toutes les options d'affichage, à l'exception d'un tracé en mosaïque.Ensuite, joignez les graphiques de distribution et bivariés dans une seule fenêtre pour obtenir une autre vue de rapport personnalisé.Ensuite, sous le triangle rouge dans l'en-tête du rapport, nous avons sélectionné le bouton Modifier l'application qui fait apparaître l'espace de travail Application Builder (après avoir sélectionné la table de données sous-jacente).Désormais, dans l'Application Builder, il suffit de sélectionner le premier graphique Distribution Mosaic Plot, de cliquer dessus avec le bouton droit de la souris et de sélectionner Use As A Filter.Maintenant, je peux avoir une solution en deux clics ... où je sélectionne d'abord le point sur le graphique Bivariate Fit Y By X qui m'intéresse, puis je peux glisser et sélectionner (direction du clic) l'ID complet dans la mosaïque partiellement ombrée qui mettra désormais en surbrillance tous les identifiants similaires sur le tableau de données.Il est également agréable de voir graphiquement sur le graphique Bivariate Fit Y By X tous les points correspondant au même numéro d'identification après l'avoir sélectionné sur le Mosaic Plot.


Vous pouvez maintenant accéder au triangle rouge sous l'en-tête du rapport et enregistrer le script dans une fenêtre de script pour voir le travail de script sous-jacent qui a été généré pour vous lors de la création de cette vue.Encore une fois, bien que ce ne soit pas aussi simple que de pouvoir le faire directement à partir de Bivariate Fit Y By X, cela montre une solution prête à l'emploi et vous donne un moyen de générer automatiquement une partie du script.Sera joint dans ce fichier de travail JMP avec des scripts enregistrés que vous pourrez également consulter.
J'espère que cela t'aides!