J'ai un cas d'utilisation pour créer un graphique qui aura une capacité d'exploration.
L'utilisateur cliquera sur un point du graphique et, à l'aide de la fonction Mousetrap(), un script s'exécutera qui fera apparaître une nouvelle fenêtre contenant un autre graphique avec des informations plus détaillées.
Je souhaite ensuite prendre en charge un niveau supplémentaire d'exploration à partir de cette première fenêtre contextuelle.
Je vais illustrer avec un exemple simple utilisant l'ensemble de données BigClass dans le script ci-joint.
Les notes du script mettent en évidence le problème : avec un seul appel de la fonction mouse-trap(), le premier drill down fonctionne.
Mais si j'ajoute un deuxième piège à souris, en l'ajoutant spécifiquement au graphique qui résultera du premier zoom, ce qui se passe à la place, c'est que la deuxième action de zoom est appliquée au premier clic de souris, ce qui n'était pas prévu .
Vous ne savez pas s'il est possible d'utiliser MouseTrap() comme ceci ou non ?
ré
@Mark_Bailey merci pour la référence aux graphlets !
@tsl vous souhaitez donc explorer plusieurs niveaux. Très bien, c'est un excellent moyen d'en savoir plus sur vos données en utilisant la visualisation de données elle-même pour affiner votre concentration.
Comptons les façons dont vous pouvez le faire dans JMP15 en utilisant des graphlets. Cette nouvelle fonctionnalité suit une architecture "porcelaine + plomberie", ce qui signifie qu'il existe des moyens prédéfinis et faciles à utiliser pour accomplir un comportement standard, construit sur une API de programmation (JSL) à laquelle vous pouvez également accéder pour implémenter des cas personnalisés. Le scénario que vous avez décrit peut être mis en œuvre à l'aide de deux approches différentes de "porcelaine", ou pointer-cliquer.
Si vous vous concentrez sur une mesure particulière et unique - par exemple la hauteur - vous pouvez utiliser un préréglage de Graphlet comme l'histogramme. Après avoir créé votre graphique de référence, cliquez avec le bouton droit de la souris sur l'arrière-plan du graphique pour accéder au nouveau menu "Hover Label". De là, vous verrez les options prédéfinies

Un préréglage de graphlet créera un graphlet du type de visualisation indiqué, en dérivant le mappage des rôles à partir des variables sélectionnées dans le graphique de référence. Étant donné que le graphique de base affiche le nombre de variables de hauteur, le préréglage du graphlet d'histogramme affichera automatiquement la distribution de cette variable pour chaque barre donnée.Mais chaque barre filtre déjà jusqu'à une seule valeur de hauteur, ce n'est donc pas une distribution intéressante. Disons que notre ligne de base était plutôt un histogramme ; un préréglage d'histogramme montrerait la distribution des valeurs sur chaque bac :

Notez comment la vignette de l'étiquette de survol agit comme un aperçu du graphique. Si vous continuez et cliquez sur l'image miniature, cela lancera le graphique équivalent dans une nouvelle fenêtre. Ce nouveau graphique est filtré pour n'inclure que les lignes correspondant à l'élément visuel survolé (dans ce cas, le bac 60-62), mettant en œuvre l'opération d'exploration. L'opération de filtrage est mise en œuvre à l'aide d'un filtre de données local réduit, ce qui le rend résistant aux modifications de sélection non liées et permet une exploration plus approfondie via des modifications des paramètres de filtre.

Une autre caractéristique des préréglages de graphlet est qu'ils sont préconfigurés pour être récursifs, afin de prendre en charge des scénarios d'exploration avancés. Vous pouvez donc continuer et interagir avec les bacs dans le nouvel histogramme. Vous verrez que vous pouvez également les approfondir :

Désormais, l'exemple .jsl attaché à la page comportait un scénario d'exploration plus complexe, dans lequel les types de visualisation et les attributions de rôle étaient choisis pour des valeurs spécifiques à chaque niveau d'exploration :
* Niveau 0 (ligne de base) : la valeur de hauteur compte
* Niveau 1 : box plot du poids selon le sexe
* Niveau 2 : détails de la ligne affichés sur le journal
Ce niveau de personnalisation peut toujours être réalisé en utilisant un autre type de "porcelaine": la commande Coller le graphlet. Cette commande permet à l'utilisateur "d'empiler" les définitions de graphlets, qui seront utilisées lorsque l'utilisateur approfondira les éléments visuels à chaque niveau.
Ainsi, après avoir créé le graphique de base, continuez et créez des graphiques représentant chacun des niveaux d'exploration souhaités. Ne vous inquiétez pas du filtrage - comme dans le cas précédent, cela se fera automatiquement pour vous. Ensuite - en commençant par le dernière level - copiez son script dans le presse-papier :

Passez ensuite au graphique précédent, puis collez (le script en tant que) graphlet :

Dans les images ci-dessus, nous avons collé le graphique détaillé de niveau 1 (le graphlet poids par sexe) dans le graphique de base. Le résultat:

Comme ce scénario a été défini, il n'y avait pas besoin d'un graphlet de collage de niveau 2. L'affichage des valeurs de ligne pour l'élément visuel survolé est déjà le comportement par défaut pour les étiquettes de survol. Voici ce que nous verrions lors d'un zoom avant de deuxième niveau, après avoir survolé la deuxième boîte à moustaches :

En cliquant avec le bouton droit de la souris sur l'étiquette de survol, l'utilisateur peut copier son contenu, créer un sous-ensemble de données ou modifier davantage la configuration de l'étiquette de survol.
J'espère que cela a été utile. Pour un exemple d'exploration catégorique, vérifiez la réponse à https://community.jmp.com/t5/Discussions/drill-down-in-a-graph-hierarchy/mp/11702
Plus d'informations sur les personnalisations de Hover Label peuvent être trouvées à: https://www.jmp.com/support/help/en/15.0/index.shtml#page/jmp/add-hover-graphs.shtml#
Les informations sur les graphlets se trouvent spécifiquement sur : https://www.jmp.com/support/help/en/15.0/index.shtml#page/jmp/add-graphs-or-images-to-hover-labels.s...
Bonne idée ! Déplacez votre code dans une fonction et cela fonctionne :
makesubset = Function( {_x},
{TestWin}, // local variables
dt << select where( :height == _x );
TestWin = New Window( "Drill Down Window",
dt << GraphBuilder( Size( 534, 448 ), Show Control Panel( 0 ),
Where( Selected() ), Variables( X( :sex ), Y( :weight ) ),
Elements( Points( X, Y, Legend( 4 ) ), Box Plot( X, Y, Legend( 5 ) ) )
)
);
TestWin[FrameBox( 1 )] << add graphics script(
Mousetrap(
_x2 = Round( X, 0 );
Show( _x2 );
)
);
);
dt = Open( "$sample_data/big class.jmp" );
dt << Graph Builder( Size( 527, 454 ), Show Control Panel( 0 ),
Variables( X( :height ) ), Elements( Bar( X, Legend( 6 ) ) ),
SendToReport( Dispatch( {}, "Graph Builder", FrameBox,
{Add Graphics Script( 2, Description( "Script" ),
Mousetrap(
_x = Round( X, 0 );
makesubset( _x );
)
), Grid Line Order( 1 ), Reference Line Order( 3 )}
)
)
);Il se comporte comme vous le décrivez car la fonction Mousetrap n'est pas vraiment exécutée comme les autres fonctions. La méthode <
Je soupçonne qu'il garde le dernier. L'analyse ne suivra pas l'appel de fonction, et l'appel de fonction peut faciliter la lecture et la maintenance de votre JSL.
@EvanMcCorkle Oui, il semble étrange qu'il trouve une souricière à l'intérieur d'une souricière.
JMP 15 a introduit des "étiquettes de survol" précisément dans ce but. Il y a trois aspects qui fonctionnent ensemble : les graphlets, les textlets et les gridlets.
Voir Aide > Bibliothèque de documentation JMP > Guide de création de scripts > Chapitre 9 : Rapports JMP, page 512. Il y a beaucoup d'explications et d'exemples pour apprendre à mettre en œuvre des comportements d'exploration.