Dans un précédent poste , vous avez découvert les préréglages de graphlet et la commande Coller le graphlet. Nous vous avons montré comment ils prennent en charge les vignettes de visualisation contextuelles et cliquables dans les étiquettes de survol. Ces commandes implémentent l'aspect « porcelaine » de la fonctionnalité d'extensions d'étiquettes de survol de JMP 15, fournissant une interface conviviale qui ne nécessite aucune compétence en codage.
Dans cet article, vous aurez un meilleur aperçu de la couche de « plomberie » sous-jacente qui alimente la couche de porcelaine. Cette couche est conçue comme une structure également accessible directement par l'utilisateur, permettant la mise en œuvre d'exigences non couvertes par les caractéristiques de la porcelaine.
Le cadre d'extensions d'étiquettes de survol
Un framework est une combinaison de services de base et de points d’extension. Du point de vue du framework, les presets et les graphlets personnalisés sont identiques, la seule différence est donc que JMP fournit les définitions prédéfinies pour faciliter la tâche des utilisateurs.
Au niveau du framework, tous les graphlets – y compris les préréglages – utilisent le Définir le graphique commande, mais chaque préréglage initialise le framework avec un ensemble d'arguments différent. Ces arguments incluent des fragments de script JSL, utilisés ultérieurement comme rappels. Le framework évalue ces rappels en réponse aux interactions de l'utilisateur, telles que le survol d'un élément visuel ou le clic sur la vignette d'une étiquette de survol.
L'évaluation du rappel se produit dans un Contexte d'exécution de l'étiquette de survol (HLEC), qui capture des informations contextuelles sur l'élément visuel sous-jacent. Les rappels peuvent tirer parti de ces informations contextuelles pour implémenter un comportement dynamique. Prenez, par exemple, le préréglage Histogramme. Après avoir examiné le contexte pour trouver l'attribution de rôle Y de la visualisation de base, il réutilise ensuite cette colonne pour sa propre attribution de rôle Y.
Les autres points d'entrée au cadre d'extensions d'étiquettes de survol incluent Coller le graphique (un wrapper pour Set Graphlet), Définir le texte , et Définir le grill . Dans cet article, nous utiliserons la commande Set Graphlet comme exemple, mais les mêmes principes s'appliquent également aux autres.
La meilleure façon de créer des graphlets personnalisés est d'utiliser le Éditeur d'étiquettes de survol dialogue. Vous pouvez également utiliser l'éditeur d'étiquettes survolées pour inspecter la façon dont un préréglage de graphlet est défini. Les définitions prédéfinies fournissent d'excellents exemples d'utilisation des fonctionnalités du framework.

Rappels de graphlets
Le panneau Graphlet Hover Label Editor expose quelques arguments de script, les plus importants étant Image et Clic. Le framework les appellera au moment de l'exécution en réponse aux événements suivants :
- Survol : Lorsque l'utilisateur positionne le pointeur de la souris sur un élément visuel pendant une courte période, par exemple lorsqu'il place la souris sur une barre dans un graphique à barres, le fragment de script Image est exécuté. Cela aboutit à la production soit d'une PictureBox (un boîte d'affichage qui contient un objet image graphique) ou un arbre d'affichage qui contient une PictureBox. Si le script demande l'exécution d'une Plateforme, il sera lancé dans une fenêtre invisible. Le framework parcourra ensuite l'arborescence d'affichage du résultat, puis capturera et réduira une capture d'écran de la première PictureBox rencontrée. Cette image devient la vignette affichée à l’intérieur de l’étiquette de survol.
- En cliquant: Lorsque l’utilisateur clique avec le bouton gauche sur la vignette du graphlet d’étiquette de survol, l’argument facultatif Click est déclenché. S'il n'est pas présent, le script Picture est réutilisé, mais l'exécution d'une plateforme contenue entraîne une fenêtre visible. C'est ainsi que les préréglages lancent leurs visualisations.
Le rappel Click peut exécuter des scripts JSL arbitraires. Par exemple, il peut ouvrir des pages Web, effectuer des appels REST, charger des fichiers à partir du disque et mettre à jour des tables. Il permet l'intégration avec des données externes, des systèmes et d'autres scénarios avancés.
Comme mentionné précédemment, l'évaluation des rappels s'effectue dans des contextes d'exécution, qui comportent deux composants :
- Un filtre de données local qui sous-ensemble les lignes pour correspondre aux données des éléments visuels.
- Un espace de noms local qui capture les attributs de l'élément visuel.
Filtre de données locales
Chaque élément visuel d'un graphique correspond à un sous-ensemble des données d'origine. Par exemple, regardons un graphique à barres montrant la taille moyenne des élèves selon le sexe. La première barre correspond aux étudiantes ; le second est destiné aux hommes. Ce regroupement implicite se produit lors de la définition d'une visualisation.
Le cadre rend le regroupement explicite à travers un équivalent Filtre de données locales (LDF), qui permet de restreindre les lignes du tableau de données visibles lors de l'exécution du rappel. La définition du LDF est basée sur :
- Type de graphique de visualisation de base.
- Les colonnes affectées à ses rôles de regroupement (X, Groupe X/Y, Superposition, etc.).
- Les valeurs associées à ces colonnes.
Dans l'exemple ci-dessous, le graphique de référence est un petit graphique à barres de multiples. Le framework le mappe à un LDF en fonction de ses deux variables de regroupement :
- Celui affecté au rôle X (âge).
- Celui affecté au groupe Y (sexe).
Notez comment la barre survolée et le panneau contenant le graphique génèrent les valeurs de filtre.

Un contrôle supplémentaire sur l'inclusion des colonnes est possible via le Passer les filtres les attributs. Bien que cela soit rarement nécessaire, cela peut être utile si vous souhaitez afficher plus de données que celles habituellement associées à l'élément visuel sous-jacent.
Le mécanisme de base derrière analyses approfondies est la capacité de lancer des plates-formes avec des LDF basés sur le contexte en réponse aux interactions des utilisateurs.
Espace de noms local
Le deuxième volet du HLEC est un espace de noms local . Son objectif principal est d'exposer des informations contextuelles au graphlet, ce qui permet au graphlet d'afficher un comportement dynamique et contextuel. Le framework enveloppe chaque rappel de graphlet dans un espace de noms local avant de l'exécuter.
L'espace de noms local du graphlet est rempli par le framework avec des variables locales. Ces variables de contexte suivez une convention de dénomination, ce qui signifie que leurs noms doivent toujours commencer par un trait de soulignement. Ils capturent des informations provenant de différentes sources associées au contexte d'exécution actuel :
- Type d'élément visuel survolé (barre, marqueur, etc.).
- Index de la première ligne des données associées.
- Nombre d'observations dans les données associées.
- Survolez les entrées de la grille d’étiquettes (une variable pour chaque entrée).
- Type de rappel (Image, Clic, etc.).
- Clause LDF où.
- Les niveaux d'exploration comptent.
Un moyen simple de vérifier les valeurs d'un nouveau graphlet lors de son débogage consiste à utiliser le préréglage de contexte Textlet, qui ajoute les valeurs sous forme de texte à l'étiquette de survol elle-même, comme indiqué ci-dessous :

Mettre tous ensemble
Le diagramme suivant montre comment les différentes parties du framework s'assemblent dans l'exécution d'un préréglage de graphlet. Dans un graphlet personnalisé, l'utilisateur fournit le modèle de graphique à l'aide de l'argument de script Picture.

Premièrement, le framework capture un modèle de graphique et d'autres arguments au moment de la configuration. Plus tard, en réponse aux interactions de l'utilisateur, il crée le filtre et l'espace de noms qui font partie du HLEC. Il instancie le modèle à l'intérieur du HLEC pour générer l'image miniature de l'étiquette de survol. Si l'utilisateur clique sur cette image, il lance la plateforme associée dans sa propre fenêtre.
Un exemple de graphlet personnalisé
Maintenant que vous comprenez les mécanismes, voici un exemple de la façon dont l'accès au framework de graphlets sous-jacent a aidé un utilisateur à résoudre un problème réel.
Il n'y a pas si longtemps, un utilisateur a posé une question ici dans le Communauté d'utilisateurs JMP . Elle avait un dossier contenant des fichiers images (en particulier des images haute résolution) de ses expériences. Elle souhaitait afficher l'image associée à une expérience dans l'étiquette de survol, mais les images étaient trop volumineuses pour être stockées dans ses tables JMP. Était-il possible de les charger depuis le disque à la demande ?
Il y avait quelques obstacles à la réalisation de cet objectif. Il ne correspondait à aucun des préréglages existants, ne convenait pas à Paste Graphlet car il nécessitait un comportement dynamique et le nom de fichier de l'image affichée devait être calculé à la demande.
La solution consistait à créer un graphlet personnalisé en étendant le framework avec des rappels basés sur les primitives de fichiers JSL.
Les principes de cette solution sont présentés ci-dessous dans un exemple basé sur l'ensemble de données Iris. La partie critique de cet exemple montre comment l'image peut être chargée directement à partir du disque. Le nom de fichier est basé sur l'une des variables d'espace de noms local HLEC. En prime, vous pouvez voir comment ouvrir une page Web associée en réponse au clic de l'utilisateur sur l'image affichée.
Set Graphlet(
// Value from hover label grid entry (labeled column)
Picture(
Picture Box( Open( img_dir || local:_Species || ".jpg", "jpg" ) )
),
// Value from data table using column reference for visualized row
Click(
Web( "https://en.wikipedia.org/wiki/Iris_" || Column( "Species" )[local:_firstRow] )
)
)

Conclusion
Même si nous espérons que vous pourrez toujours utiliser des préréglages et coller des graphlets pour mettre en œuvre la majorité de vos besoins, nous réalisons que ce n'est pas toujours possible. En utilisant le framework, vous pouvez créer vos propres extensions d'étiquettes de survol personnalisées chaque fois que vous avez un besoin particulier.
Si vous avez des questions, souhaitez partager vos créations ou simplement voir ce que proposent les autres utilisateurs, rejoignez-nous ici dans le Communauté d'utilisateurs JMP . Nous avons hâte de voir votre prochain graphlet sympa !