graphiques circulaires + cartes thermiquesBonjour à tous,
En tant que biologiste marin, je suis récemment tombé sur une présentation visuelle de données sur les récifs coralliens que j'aime beaucoup (voir pièce jointe). Vous y verrez divers graphiques circulaires dans lesquels les coins individuels sont essentiellement des cartes thermiques pour montrer les niveaux relatifs de certains paramètres. J'aimerais adapter cela à mes propres recherches, et je pense que cela peut être fait avec Graph Builder, mais pas comme une carte thermique en soi. Voici mon idée : disons que je veux quatre secteurs représentant quatre variables de réponse (A, B, C et D). La taille n'a pas d'importance, je vais donc donner à chacun une valeur de 0,25 pour qu'ils occupent des surfaces égales. Je me rends compte que je peux superposer des couleurs, j'ai donc créé une colonne "couleur" et attribué des valeurs aux quatre variables de réponse, mais mon graphique n'a pas changé en conséquence.
J'ai essayé la coloration et l'étiquetage des valeurs, mais sans succès. J'ai l'impression d'avoir mal installé ma table ! Aucune suggestion?? Merci!
Re : graphiques circulaires + cartes thermiquesAnderson,
Cet exemple du corps humain est utilisé ici : Analyse des données personnelles d'alimentation et de condition physique avec JMP et ici: Utilisation de cartes personnalisées comme filtres de sélection pour sous-ensembler et explorer les graphiques de mes données d'entraînement dans JMP® 12
j'ai vu votre Présentation du Sommet de la découverte des Amériques 2020 enregistrement : Vers la prévision du sort des coraux de récif (2020-US-45MP-615) mais j'ai hâte de le voir en live !
~Jean
Re : graphiques circulaires + cartes thermiquesJohn,
C'est génial, et j'ai bien l'intention de regarder la conférence votre semaine (c'est sur mon emploi du temps.). Je pense que cette capacité, ainsi que les « graphlets », ouvriront toutes sortes de portes pour superposer des données sur des graphiques Graphbuilder et tracer des données sur des figures personnalisées (comme l'exemple du corps humain dont nous avons parlé plus tôt et qui se trouve quelque part sur le site Web de JMP dans sous forme de tutoriel, je crois). Je serai curieux de voir si quelqu'un a des suggestions en termes d'esthétique. Personnellement, j'aime les graphiques circulaires, mais peut-être existe-t-il une meilleure solution que nous n'envisageons même pas ? J'aime aussi votre idée du style de jeu vidéo "barres de santé".
À bien y penser, cela pourrait peut-être profiter aux épidémiologistes. Par exemple, si vous avez superposé les taux d'infection sur une grille latin-lon, puis épinglé des graphiques en secteurs/camemberts avec des informations supplémentaires sur les patients ou les groupes de patients sur le tracé de contour, vous pourriez potentiellement ajouter une couche de complexité qui pourrait ne pas être possible en utilisant les fonctionnalités standard de GraphBuilder (je suppose que pour la plupart des types de données, les graphlets fonctionneraient également pour cela).
Re : graphiques circulaires + cartes thermiquesCette discussion m'a inspiré à créer un article et une présentation pour JMP Discovery Americas 2020.Qu'obtenez-vous lorsque vous combinez un biologiste marin, un jeu vidéo et JMP ? (2020-US-45MP-543)
Pendant que je préparais l'article, j'ai eu le temps d'expérimenter et d'améliorer les techniques décrites dans cet article.
Le document comprend quelques ressources (cartes personnalisées et exemples) et des instructions détaillées sur la façon de les utiliser.
J'espère que vous trouverez cet article et mon article utiles.
Merci,
~Jean
Re : graphiques circulaires + cartes thermiquesAnderson,
Graph Builder ne permet pas de placer des graphiques à barres ou des diagrammes circulaires à des emplacements spécifiques sur une carte. Vous pouvez le contourner par :
- Création d'un tableau à partir de votre graphique Graph Builder dans lequel vous utilisez un numéro d'échantillon dans le rôle de carte (construit à l'aide de barres ou de formes de carte personnalisées. Cela crée un tableau avec une colonne de numéros d'échantillon et une colonne d'images pour chaque échantillon.
- Copiez la colonne d'image de la table générée vers la table de données non empilées (assurez-vous que la colonne d'image correspond à l'ordre du numéro d'échantillon. **
- un. Étiquetez la colonne d’image OU b. Définissez « Utiliser comme marqueur » pour la colonne d'image.
- À l'aide du tableau de données non empilées, créez une carte de contour dans Graph Builder en utilisant la colonne de salinité ou de température comme rôle de couleur.
- Ajoutez un élément de points.En utilisant éventuellement un autre rôle de couleur.
- Si vous suivez l'étape 3.a, les images apparaîtront dans les étiquettes de survol. Vous pouvez épingler certaines étiquettes de survol et remplacer le texte pour supprimer tout texte d'étiquette de survol indésirable.
- si vous suivez l'étape 3b, tous les marqueurs seront affichés avec l'image de la colonne d'image. Cela peut provoquer un affichage encombré que vous pouvez résoudre en zoomant ou en supprimant les images qui se chevauchent.
** J'ai trouvé qu'ils n'étaient pas dans le même ordre et j'ai dû trier avant de copier la colonne d'image. Avec le recul, j'ai réalisé que j'aurais pu utiliser une jointure ou une jointure virtuelle pour obtenir les images sur les bonnes lignes. J'aurais aimé lire ceci en premier : https://community.jmp.com/t5/JSL-Cookbook/Geographic-Maps-with-Graphs-as-Markers/ta-p/53782.
J'ai publié les versions 3.a et 3.b ici :
https://public.jmp.com/packages/Heat-contour-with-image-annotations/js-p/5d64597acf28b80f980812ba

À propos de la méthode que j'ai utilisée pour dessiner les barres. Je n'ai pas utilisé de cartes personnalisées, j'ai utilisé le script graphique personnalisé pour calculer la longueur des barres et les positionner au-dessus de chaque point.
En matière de rationalisation, JSL est souvent le meilleur choix.
~Jean
Re : graphiques circulaires + cartes thermiquesJohn,
C'est bien! Pensez-vous que cela pourrait être fait directement dans Graph Builder ou cela nécessiterait-il des scripts et des connaissances avancées pour le faire ? Je sais que je peux simplement modifier le script, mais je pense simplement à le rationaliser si j'utilise cette option sur les graphiques circulaires pour des tonnes et des tonnes de données. Cela nécessitait-il une forme personnalisée ou avez-vous épinglé manuellement toutes ces icônes sur la carte ?
Re: Diagrammes circulaires + cartes thermiquesDe rien Anderson et DS,
J'ai publié un meilleur exemple de script graphique personnalisé annotant trois variables par point sur une carte.

C'est disponible sur JMP Public. Cliquez simplement sur le lien suivant :
https://public.jmp.com/packages/5d605bce3560ce0d2cafd48b
J'ai utilisé des barres simples (traits épais) pour représenter trois valeurs de cellules fictives par point. Des diagrammes circulaires demanderaient un peu plus de travail, mais je souhaitais présenter ceci comme preuve de concept. Le script JSL est disponible en téléchargement dans les détails de la publication sur JMP Public.
~Jean
Re : graphiques circulaires + cartes thermiquesOuah! C'est bien. Merci pour toute l'aide et les informations John. Je n'avais aucune idée de l'existence de la fonctionnalité de carte personnalisée, alors je suis descendu dans ce "trou de lapin" pendant un jour ou deux, en pensant à toutes les façons intéressantes de l'utiliser pour tracer des données sur des images tracées des coraux que j'étudie (malheureusement, cependant, je prélève rarement des tonnes d'échantillons AU SEIN de la même colonie, même si c'est définitivement une idée de projet en veilleuse, et ce serait une bonne façon d'afficher les résultats).
Je pense qu'avoir la possibilité de tracer des données sur n'importe quel type de forme, d'image, etc. est définitivement une fonctionnalité de JMP que davantage de gens devraient connaître, et je suggère qu'elle soit une fonctionnalité réelle dans le package à l'avenir (plutôt que comme un complément, bien que le complément fonctionne bien pour le moment).
À DS : je venais en fait de penser à créer mes graphiques circulaires et mes cartes dans JMP (le traçage des données sur des cartes est assez simple avec JMP une fois que vous l'avez fait une ou deux fois), puis à utiliser Adobe pour créer les types de figures. montré dans mon message d'origine, mais JMP dispose de moyens d'annoter des points de données sur des tracés, en y épinglant des images le soir. Par conséquent, avec un peu de pratique et de travail, vous pourriez très bien créer pratiquement la carte ENTIÈRE + la figure de données dans mon message d'origine dans JMP seul. En fait, je pourrais essayer de le faire dans les semaines à venir.
Merci encore à John d'avoir fourni la solution !
Re : graphiques circulaires + cartes thermiquesSalut @John_Powell_JMP ,
Merci pour l'information supplémentaire. J'ai mis cette discussion dans mes favoris afin de pouvoir l'avoir dans mes dossiers, puis de revenir également pour relire les informations supplémentaires que vous avez envoyées.
Désolé, je crains de ne pas avoir expliqué ce que je voulais dire en marquant votre message comme une solution - je ne pense pas pouvoir le faire parce que je n'étais pas l'auteur original (et je n'ai donc pas cette option), pas parce que vous n'a pas abordé la carte thermique. Mes excuses s'il est lu de cette façon - je suis revenu en arrière et je l'ai relu, et cela ressemble un peu à ce que je disais de cette façon (pas bon de ma part).
Je connais JSL et je l'utilise pour beaucoup d'autres choses, mais je n'ai pas essayé de l'utiliser pour des graphiques personnalisés comme celui-ci, ce sera donc un nouveau domaine à apprendre pour moi !
Merci!,
DSRe: Diagrammes circulaires + cartes thermiquesMerci pour vos gentils mots @SDF1 .
Vous avez raison, je n'ai pas complètement répondu à la question concernant la superposition de ces graphiques sur une carte de fond.
La superposition sur une carte nécessiterait un mécanisme différent, comme l'utilisation du script dans la boîte de dialogue Personnaliser : 
Des exemples de scripts sont fournis :

Vous trouverez ici des informations sur la fonction de personnalisation :
https://www.jmp.com/support/help/14-2/customize-graphical-elements.shtml
Voici un petit exemple utilisant des cercles :

Re : graphiques circulaires + cartes thermiquesSalut @John_Powell_JMP ,
Merci pour votre réponse rapide et claire. Avant de recevoir votre réponse, j'ai relu le message original et j'ai réalisé que je l'avais parcouru trop rapidement et j'ai noté la mention des cinq dernières colonnes.
J'ai ensuite téléchargé votre contenu depuis JMP Public, j'ai examiné davantage les détails et j'ai remarqué la référence à la forme de la carte pour les propriétés de la colonne d'étiquette. Je n'avais pas exploré cette possibilité dans le passé, j'ai donc lu un peu et expérimenté vos cartes. Très cool!
J'espérais peut-être aussi superposer en arrière-plan la position longitude/latitude de l'endroit où les données ont été collectées sur la carte du monde - comme dans l'exemple de l'affiche originale. Je pense cependant que cela va au-delà de ce qui peut être fait dans le générateur de graphiques ; mais ce serait cool. C'est une belle idée de visualisation. Oui, je peux certainement voir en quoi cela peut être utile pour mon travail. Je l'ai testé sur certaines de nos données, et tout ce que j'ai à faire est d'ajuster le nom de l'ID de forme, et cela fonctionne. Très bien merci!
Soit dit en passant, je marquerais votre message comme une solution (au moins pour le graphique circulaire), mais je ne pense pas pouvoir le faire. JMP peut-il créer à la fois le graphique circulaire et le contour (ou la carte thermique) comme l'espérait l'affiche originale ?
Merci!,
DSRe : graphiques circulaires + cartes thermiquesJ'ai empilé des colonnes nommées : Sym GE HMS, hôte GE HMS, couleur de la colonie, variabilité et indice d'aberrance additionné. Dans le tableau joint à la publication publique JMP, ils se trouvent désormais sous la colonne nommée Réponses avec l'étiquette de chaque réponse (les anciens noms de colonne) dans la colonne Étiquette.
JMP ne crée pas automatiquement de graphiques « bullseye » en coupe. Il y a quelques étapes à suivre :
- J'ai créé les fichiers de formes de carte personnalisés fournis avec la publication publique JMP qui définissent les sections et la cible.
- Dans Graph Builder, j'ai fait glisser la colonne Étiquette vers le rôle Forme (en bas à gauche), qui affichait le contour de la forme personnalisée.
- Pour appliquer les couleurs, j'ai fait glisser la colonne Réponses vers le rôle Couleur (à droite). Le formulaire est alors rempli avec les réponses moyennes pour chaque secteur.
- Pour séparer chaque échantillon, j'ai fait glisser la colonne du numéro d'échantillon dans le rôle Wrap (en haut à droite).
Je ne peux pas m'attribuer le mérite de cette belle idée de visualisation. Cela vient de l’affiche originale.
Je suis heureux de voir que cela peut vous aider aussi.
~Jean
Re : graphiques circulaires + cartes thermiquesSalut @John_Powell_JMP ,
Je suis vraiment intéressé à m'essayer à cela pour voir si je peux l'adapter à certains des rapports réalisés par mon entreprise.
Vous mentionnez que vous avez empilé par colonnes d'intérêt, mais lesquelles sont-elles ? J'ai téléchargé le tableau de données, mais je n'arrive pas à déterminer quelles colonnes doivent être empilées. Et JMP génère-t-il automatiquement le diagramme circulaire sous forme de « cible » en coupe, ou s'agit-il d'un paramètre distinct. Je n'en ai jamais vu un comme celui-ci auparavant. C'est une visualisation intéressante et nouvelle pour moi, c'est pourquoi je suis curieux à ce sujet.
Merci!,
DSRe: Diagrammes circulaires + cartes thermiquesEn empilant les colonnes qui vous intéressent, vous pouvez utiliser une carte personnalisée pour obtenir la visualisation que vous recherchez.
Voici un exemple sur JMP public utilisant les données que vous avez fournies.
Vous trouverez la carte personnalisée et le tableau de données modifié à l'adresse suivante :
https://public.jmp.com/packages/5d5aa110f40f010268e63cf4
~Jean
Re : graphiques circulaires + cartes thermiquesJe suis toujours perplexe, alors j'ai pensé joindre le fichier de données réel. Fondamentalement, je souhaite placer les cinq dernières colonnes dans un graphique circulaire dans lequel les couleurs des coins reflètent les couleurs des cellules (encapsulées par numéro d'échantillon). Je commence à penser que cela n'est peut-être pas possible avec Graph Builder.....
Re: Diagrammes circulaires + cartes thermiquesBonjour ,
Je rejoins cette discussion un peu tard, mais je cherche à créer une visualisation très similaire. La solution « 3.b » m’intéresse particulièrement, car je souhaite afficher des diagrammes circulaires sur une grille couvrant l’Europe (le style des étiquettes est totalement illisible dans ce cas).
Le problème, c'est que lorsque j'utilise des graphiques comme marqueurs, le fond est blanc, ce qui ne rend pas très bien sur les cartes : ils ont tendance à se chevaucher dans les coins.
Bien que je puisse réduire la zone blanche en ajustant la taille du graphique circulaire, le fond blanc reste visible. Existe-t-il un moyen de rendre ce fond transparent ou de le supprimer complètement dans JMP 17 ?
Johanna
Re: Diagrammes circulaires + cartes thermiquesSalut @johanna_younous ,
Bienvenue dans la conversation.
Lorsque j'ai rejoint cette conversation pour la première fois, mes graphiques avaient eux aussi un fond blanc.
Au moment de réaliser la présentation mentionnée plus haut, j'ai trouvé comment rendre le fond transparent.
J'ai utilisé le script JSL suivant pour rendre transparents les pixels blancs dans mon tableau d'images où le nom de la colonne d'images graphiques était « Graphique ».
dt=CurrentDataTable();
For Each Row(
{r, g, b} = dt:Graph[] << getpixels( "rgb" );
a = !AND(r == g, g == b);
dt:Graph[] << setpixels( "rgba", {r, g, b, a} );
);
Cela rend également transparents les pixels gris dont les composantes rouge, verte et bleue sont identiques. J'avais aussi du gris en arrière-plan.
J'espère que cela fonctionnera pour vous.
~Jean
Re: Diagrammes circulaires + cartes thermiquesMerci @John_Powell_JMP ,
Malheureusement, cette boucle ne fonctionne pas entièrement pour moi, et j'ai du mal à comprendre pourquoi.
Lorsque j'exécute la boucle complète, le fond blanc de mes graphiques ne disparaît pas :
);
dtgraph= Graphbuild<< Make Into Data Table( );
For( i=1, i <= nrows(dtgraph) , i++, //i=3
img =dtgraph:Graph[i] ;
{r, g, b} = img << getpixels( "rgb" );
// Pixel coloré → alpha = 1 (opaque)
// Pixel gris/blanc/noir (r==g==b) → alpha = 0 (transparent)
a = ! (r==g==b);
Wait(0);
img << setpixels("rgba", {r, g, b, a});
Wait(0);
dtgraph:Graph[i] = img;
);
Mais si j'exécute cela étape par étape, la mise à jour est bien appliquée à la première ligne !
img =dtgraph:Graph[1] ;
{r, g, b} = img << getpixels( "rgb" );
// Pixel coloré → alpha = 1 (opaque)
// Pixel gris/blanc/noir (r==g==b) → alpha = 0 (transparent)
a = ! (r==g==b);
Wait(0);
img << setpixels("rgba", {r, g, b, a});
Wait(0);
dtgraph:Graph[1] = img;
Ça me rend dingue ! Je suppose que c'est un problème de synchronisation des mises à jour ou quelque chose lié à la colonne « Type d'expression » ?
Vos suggestions seraient grandement appréciées 
Johanna
Re: Diagrammes circulaires + cartes thermiquesBien que cette solution (et plusieurs autres contributions) soit assez innovante, je dois dire que je ne trouve pas les diagrammes circulaires très utiles (cela me rappelle la citation de Tufte, que je paraphrase car je ne me souviens plus exactement où il l'a prononcée : « la seule chose pire qu'un diagramme circulaire stupide, c'est d'en avoir plusieurs »). Les diagrammes en anneau, comme toujours, sont préférables aux diagrammes circulaires, mais je pense que les graphiques à barres sont bien plus adaptés dans ce cas. Avec les multiples comparaisons sur les 4 dimensions, deux problèmes se posent : d'abord, l'ordre des parts et ensuite, leur taille. Il est plus facile d'ordonner des barres que des parts de gâteau, et leurs tailles sont également bien plus appropriées. Il existe peut-être d'autres représentations encore plus efficaces, mais je ne trouve vraiment pas ces diagrammes circulaires faciles à déchiffrer.
Re: Diagrammes circulaires + cartes thermiquesEntre-temps, j'ai réussi à le faire fonctionner de la manière la plus surprenante (après un long parcours d'essais et d'échecs, comme en témoigne ce script vraiment sous-optimal).
dtgraph= Graphbuild<< Make Into Data Table( );
For( i=1, i <= nrows(dtgraph) , i++, //i=6;
img =dtgraph:Graph[i] ; //
img1=char(img);
{r, g, b,a1} = img << Get Pixels( "rgba" );
a2 = !AND(r == g, g == b);
Wait(0);
eval(parse( "img << set Pixels(\!"rgba\!", {r, g, b, a2})" ));
img2= char(img);
print(img1==img2);
Wait(0);
dtgraph:Graph[i] = parse(char(img2));
img=empty();
);
print("fin loop1");
//exact same loop !!
For( i=1, i <= nrows(dtgraph) , i++, //i=6;
img =dtgraph:Graph[i] ; //
img1=char(img);
{r, g, b,a1} = img << Get Pixels( "rgba" );
a2 = !AND(r == g, g == b);
Wait(0);
eval(parse( "img << set Pixels(\!"rgba\!", {r, g, b, a2})" ));
img2= char(img);
print(img1==img2);
Wait(0);
dtgraph:Graph[i] = parse(char(img2));
img=empty();
);
print("fin loop2");
// log output
1
1
1
1
1
1
"fin loop1"
0
0
0
0
0
0
"fin loop2"
C'est un comportement vraiment très bizarre, mais comme ça fonctionne, disons que c'est suffisant : j'ai passé beaucoup trop de temps sur ce problème ^^
Je serais toujours très intéressé par toute explication concernant ce phénomène.
Re: Diagrammes circulaires + cartes thermiquesJe suis d'accord avec vous sur ce point, néanmoins, une demande de mes parties prenantes... des diagrammes circulaires (et pire encore, des diagrammes radar) !
Re: Diagrammes circulaires + cartes thermiques@johanna_younous ,
Je suis ravi que vous ayez trouvé une solution et que vous l'ayez partagée avec la communauté, mais je suis d'accord : il existe probablement une solution plus simple et plus efficace. Il se pourrait que les boucles « Pour chaque » présentent des avantages par rapport aux boucles « Pour ».
J'ai été surpris de voir que vous aviez utilisé « rgba » dans la fonction Get Pixels, mais peut-être qu'après avoir exécuté le script une fois, les pixels des images avaient une composante alpha.
Dans mon script, les images se trouvaient dans une table de données distincte et étaient liées par une jointure virtuelle. Votre situation est peut-être différente, ce qui explique pourquoi la modification des images était immédiatement visible chez moi.
Peut-être que quelqu'un dans la communauté, possédant une plus grande expertise que moi en matière de scripts JMP, pourra fournir une solution ou une explication plus simple.
Merci,
~Jean