Kreisdiagramme + WärmekartenHallo zusammen,
Als Meeresbiologe bin ich kürzlich auf eine visuelle Darstellung von Korallenriffdaten gestoßen, die mir sehr gut gefällt (siehe Anhang). Darin sehen Sie verschiedene Kreisdiagramme, in denen die einzelnen Keile im Wesentlichen Wärmekarten sind, um relative Werte bestimmter Parameter anzuzeigen. Ich würde dies gerne für meine eigene Forschung anpassen und denke, dass dies mit Graph Builder möglich ist, allerdings nicht als Heatmap an sich. Hier ist meine Idee: Angenommen, ich möchte vier Tortenstücke, die vier Antwortvariablen (A, B, C und D) darstellen. Die Größe ist unwichtig, daher gebe ich jedem einen Wert von 0,25, damit sie gleiche Flächen einnehmen. Mir ist klar, dass ich Farben überlagern kann, also habe ich eine Spalte „Farbe“ erstellt und Werte für die vier Antwortvariablen zugewiesen, aber dann hat sich mein Diagramm nicht entsprechend geändert.
Ich habe versucht, Werte einzufärben und zu beschriften, aber ohne Erfolg. Ich habe das Gefühl, ich hätte meinen Tisch einfach falsch gedeckt! Irgendwelche Vorschläge?? Danke!
Betreff: Kreisdiagramme + WärmekartenAnderson,
Dieses Beispiel des menschlichen Körpers wird hier verwendet: Analyse persönlicher Ernährungs- und Fitnessdaten mit JMP und hier: Verwenden von benutzerdefinierten Karten als Auswahlfilter zum Unterteilen und Erkunden von Diagrammen meiner Trainingsdaten in JMP® 12
Ich sah dein Präsentation des Discovery Summit Americas 2020 Aufzeichnung : Auf dem Weg zur Vorhersage des Schicksals von Riffkorallen (2020-US-45MP-615) Aber ich freue mich darauf, es live zu sehen!
~John
Betreff: Kreisdiagramme + WärmekartenJohn,
Das ist großartig und ich habe fest vor, mir den Vortrag in Ihrer Woche anzusehen (er steht auf meinem Terminkalender). Ich denke, dass diese Funktion zusammen mit den „Graphlets“ alle möglichen Möglichkeiten für die Überlagerung von Daten mit Graphbuilder-Diagrammen und das Plotten von Daten auf benutzerdefinierten Figuren öffnen wird (wie das Beispiel eines menschlichen Körpers, über das wir zuvor gesprochen haben und das irgendwo auf der JMP-Website zu finden ist). die Form eines Tutorials, glaube ich). Ich bin gespannt, ob jemand Vorschläge zur Ästhetik hat. Ich persönlich mag die Kreisdiagramme, aber vielleicht gibt es eine bessere Möglichkeit, die wir gar nicht in Betracht ziehen? Mir gefällt auch Ihre Idee der „Gesundheitsriegel“ im Videospielstil.
Wenn Sie darüber nachdenken, könnte dies vielleicht den Epidemiologen zugute kommen. Wenn Sie beispielsweise Infektionsraten über ein Lat-Lon-Gitter legen und anschließend Keile/Kreisdiagramme mit zusätzlichen Informationen über Patienten oder Patientengruppen auf dem Konturdiagramm anheften, könnten Sie möglicherweise eine Komplexitätsebene hinzufügen, die mit dieser Funktion möglicherweise nicht möglich wäre die Standardfunktionen von GraphBuilder (ich vermute jedoch, dass die Graphlets für die meisten Datentypen auch dafür funktionieren würden).
Betreff: Kreisdiagramme + WärmekartenDiese Diskussion hat mich dazu inspiriert, ein Papier und eine Präsentation für JMP Discovery Americas 2020 zu erstellen.Was bekommt man, wenn man einen Meeresbiologen, ein Videospiel und JMP kombiniert? (2020-US-45MP-543)
Während ich die Arbeit vorbereitete, hatte ich Zeit, mit den in diesem Beitrag beschriebenen Techniken zu experimentieren und sie zu verbessern.
Im Dokument sind einige Ressourcen (benutzerdefinierte Karten und Beispiele) sowie detaillierte Anweisungen zu deren Verwendung enthalten.
Ich hoffe, dass Sie diesen Beitrag und meine Arbeit nützlich finden.
Danke,
~John
Betreff: Kreisdiagramme + WärmekartenAnderson,
Graph Builder bietet keine Möglichkeit, Balkendiagramme oder Kreisdiagramme an bestimmten Stellen auf einer Karte zu platzieren. Sie können es umgehen, indem Sie:
- Erstellen Sie eine Tabelle aus Ihrem Graph Builder-Diagramm, in der Sie Beispielzahlen in der Kartenrolle verwenden (erstellt mithilfe von Balken oder benutzerdefinierten Kartenformen). Dadurch wird eine Tabelle mit einer Spalte mit der Probennummer und einer Spalte mit Bildern für jede Probe erstellt.
- Kopieren Sie die Bildspalte aus der generierten Tabelle zurück in die nicht gestapelte Datentabelle (stellen Sie sicher, dass die Bildspalte mit der Reihenfolge der Probennummer übereinstimmt. **
- A. Beschriften Sie die Bildspalte ODER b. Stellen Sie „Als Markierung verwenden“ für die Bildspalte ein.
- Erstellen Sie mithilfe der nicht gestapelten Datentabelle eine Konturkarte im Graph Builder und verwenden Sie dabei die Spalte „Salzgehalt“ oder „Temp“ als Farbrolle.
- Fügen Sie ein Punkteelement hinzu.Optional mit einer anderen Farbrolle.
- Wenn Sie Schritt 3.a befolgen, werden die Bilder in Hover-Labels angezeigt. Sie können einige Hover-Beschriftungen anheften und Text ersetzen, um unerwünschten Hover-Beschriftungstext zu entfernen.
- Wenn Sie Schritt 3 b befolgen, werden alle Marker mit dem Bild aus der Bildspalte angezeigt. Dies kann zu einer unübersichtlichen Anzeige führen, die Sie durch Vergrößern oder Löschen überlappender Bilder beheben können.
** Ich habe festgestellt, dass sie nicht in der gleichen Reihenfolge waren und vor dem Kopieren der Bildspalte eine Sortierung durchführen mussten. Im Nachhinein wurde mir klar, dass ich einen Join oder einen virtuellen Join hätte verwenden können, um die Bilder in die richtigen Zeilen zu bringen. Ich wünschte, ich hätte das zuerst gelesen: https://community.jmp.com/t5/JSL-Cookbook/Geographic-Maps-with-Graphs-as-Markers/ta-p/53782.
Ich habe sowohl 3.a als auch 3.b hier veröffentlicht:
https://public.jmp.com/packages/Heat-contour-with-image-annotations/js-p/5d64597acf28b80f980812ba

Über die Methode, mit der ich die Balken gezeichnet habe. Ich habe keine benutzerdefinierten Karten verwendet, sondern das benutzerdefinierte Grafikskript, um die Länge der Balken zu berechnen und sie über jedem Punkt zu positionieren.
Wenn es um Rationalisierung geht, ist JSL oft die beste Wahl.
~John
Betreff: Kreisdiagramme + WärmekartenJohn,
Das ist toll! Glauben Sie, dass dies direkt im Graph Builder möglich ist, oder wären dazu Skripterstellung und fortgeschrittene Kenntnisse erforderlich? Ich weiß, dass ich das Skript einfach ändern kann, aber ich denke nur darüber nach, es zu rationalisieren, wenn ich diese Option anstelle der Kreisdiagramme für Tonnen und Tonnen von Daten verwenden würde. War eine benutzerdefinierte Form erforderlich oder haben Sie alle Symbole manuell in der Karte angeheftet?
Betreff: Kreisdiagramme + HeatmapsGern geschehen, Anderson und DS.
Ich habe ein besseres Beispiel für ein benutzerdefiniertes Grafikskript veröffentlicht, das drei Variablen pro Punkt auf einer Karte annotiert.

Es ist auf JMP Public verfügbar. Klicken Sie einfach auf den folgenden Link:
https://public.jmp.com/packages/5d605bce3560ce0d2cafd48b
Ich habe einfache Balken (dicke Linien) verwendet, um drei fiktive Zellwerte pro Punkt darzustellen. Kreisdiagramme wären etwas aufwendiger, aber ich wollte dies als Machbarkeitsnachweis anbieten. Das JSL-Skript kann in den Beitragsdetails auf JMP Public eingesehen und heruntergeladen werden.
~John
Betreff: Kreisdiagramme + WärmekartenWow! Das ist toll. Vielen Dank für all die Hilfe und Informationen, John. Ich hatte keine Ahnung, dass die benutzerdefinierte Kartenfunktion existierte, also ging ich ein oder zwei Tage lang in dieses „Kaninchenloch“ und dachte über all die coolen Möglichkeiten nach, wie ich damit Daten auf nachgezeichneten Bildern der von mir untersuchten Korallen darstellen könnte (leider Allerdings entnehme ich selten Tonnen von Proben INNERHALB derselben Kolonie, obwohl es definitiv eine hintergründige Projektidee ist und dies eine coole Möglichkeit wäre, die Ergebnisse zu präsentieren.
Ich denke, dass die Möglichkeit, Daten auf beliebigen Formen, Bildern usw. darzustellen, definitiv eine JMP-Funktion ist, über die mehr Menschen Bescheid wissen sollten, und ich schlage vor, dass es in Zukunft eine tatsächliche Funktion im Paket sein sollte (und nicht nur eine Add-in, obwohl das Add-in vorerst einwandfrei funktioniert).
An DS: Eigentlich hatte ich gerade darüber nachgedacht, meine Kreisdiagramme und Karten in JMP zu erstellen (das Plotten von Daten auf Karten ist mit JMP ziemlich einfach, wenn man es ein oder zwei Mal gemacht hat) und dann Adobe zu verwenden, um die Arten von Abbildungen zu erstellen Wie in meinem ursprünglichen Beitrag gezeigt, verfügt JMP jedoch über Möglichkeiten, Datenpunkte in Plots mit Anmerkungen zu versehen und Bilder daran anzuheften. Daher könnten Sie mit ein wenig Übung und Arbeit wahrscheinlich praktisch die GESAMTE Karten- und Datenfigur in meinem ursprünglichen Beitrag allein in JMP erstellen. Tatsächlich werde ich vielleicht versuchen, genau das in den kommenden Wochen zu tun.
Nochmals vielen Dank an John für die Bereitstellung der Lösung!
Betreff: Kreisdiagramme + WärmekartenHallo @John_Powell_JMP ,
Vielen Dank für die zusätzlichen Informationen. Ich habe diese Diskussion mit einem Lesezeichen versehen, damit ich sie speichern und später noch einmal die von Ihnen gesendeten zusätzlichen Informationen lesen kann.
Tut mir leid, ich mache mir Sorgen, dass ich möglicherweise nicht erklärt habe, was ich damit meinte, Ihren Beitrag als Lösung zu markieren – ich glaube nicht, dass ich das kann, weil ich nicht der ursprüngliche Verfasser war (und daher diese Option nicht habe), nicht weil Sie Habe die Heatmap nicht angesprochen. Es tut mir leid, wenn es so gelesen wurde – ich habe es noch einmal gelesen, und es hört sich irgendwie so an, als hätte ich es so gesagt (was für mich nicht gut ist).
Ich bin mit JSL vertraut und verwende es für viele andere Dinge, habe aber noch nicht versucht, es für benutzerdefinierte Diagramme wie diese zu verwenden, daher wird dies ein neues Gebiet für mich sein, das ich lernen muss!
Danke!,
DSBetreff: Kreisdiagramme + HeatmapsVielen Dank für Ihre freundlichen Worte, @SDF1 .
Sie haben Recht, dass ich den Teil über das Überlagern dieser Grafiken mit einer Hintergrundkarte nicht vollständig beantwortet habe.
Das Überlagern einer Karte würde einen anderen Mechanismus erfordern, beispielsweise die Verwendung des Skripts im Dialogfeld „Anpassen“: 
Es werden einige Beispielskripte bereitgestellt:

Informationen zur Anpassungsfunktion finden Sie hier:
https://www.jmp.com/support/help/14-2/customize-graphical-elements.shtml
Hier ein kleines Beispiel mit Kreisen:

Betreff: Kreisdiagramme + WärmekartenHallo @John_Powell_JMP ,
Vielen Dank für Ihre schnelle und klare Antwort. Bevor ich Ihre Antwort erhalten hatte, las ich den ursprünglichen Beitrag noch einmal und stellte fest, dass ich ihn zu schnell überflogen und die Erwähnung der letzten fünf Spalten bemerkt hatte.
Ich habe dann Ihren Inhalt von JMP Public heruntergeladen und mir dort die Details genauer angesehen und dabei den Verweis auf die Kartenform für die Eigenschaften der Beschriftungsspalte bemerkt. Ich hatte diese Möglichkeit in der Vergangenheit noch nicht untersucht, also habe ich ein wenig gelesen und mit Ihren Karten experimentiert. Sehr cool!
Ich hatte gehofft, vielleicht auch die Längen-/Breitenposition des Ortes, an dem die Daten auf der Weltkarte gesammelt wurden, im Hintergrund einzublenden – wie im Beispiel des Originalplakats. Ich denke jedoch, dass das über das hinausgeht, was mit dem Graph Builder möglich ist. aber es wäre cool. Es ist eine schöne Visualisierungsidee. Ja, ich kann mir auf jeden Fall vorstellen, wie nützlich das für meine Arbeit sein wird. Ich habe es anhand einiger unserer Daten getestet und muss lediglich den Namen für die Form-ID anpassen, und es funktioniert. Sehr Schön. Danke!
Übrigens würde ich deinen Beitrag als Lösung markieren (zumindest für das Kreisdiagramm), aber ich glaube nicht, dass ich das schaffe. Kann JMP sowohl das Kreisdiagramm als auch die Kontur (oder Heatmap) so erstellen, wie es der ursprüngliche Poster erhofft hatte?
Danke!,
DSBetreff: Kreisdiagramme + WärmekartenIch habe Spalten mit den folgenden Namen gestapelt: Sym GE HMS, Host GE HMS, Koloniefarbe, Variabilität und summierter Aberranzindex. In der Tabelle, die dem öffentlichen JMP-Beitrag beigefügt ist, befinden sie sich jetzt in der Spalte „Antworten“ mit der Bezeichnung für jede Antwort (die alten Spaltennamen) in der Spalte „Beschriftung“.
JMP erstellt nicht automatisch abschnittsweise „Bullseye“-Diagramme. Es sind einige Schritte erforderlich:
- Ich habe die benutzerdefinierten Kartenformdateien erstellt, die mit dem JMP Public-Beitrag bereitgestellt werden und die Abschnitte und das Bullseye definieren.
- Im Graph Builder habe ich die Spalte „Beschriftung“ in die Rolle „Form“ (unten links) gezogen, die den Umriss der benutzerdefinierten Form anzeigte.
- Um die Farben anzuwenden, habe ich die Spalte „Antworten“ in die Rolle „Farbe“ (rechts) gezogen. Dadurch wird das Formular mit den durchschnittlichen Antworten für jeden Sektor ausgefüllt.
- Um die einzelnen Proben zu trennen, habe ich die Spalte mit der Probennummer in die Wrap-Rolle (oben rechts) gezogen.
Ich kann die nette Visualisierungsidee nicht für mich loben. Es stammt vom Originalplakat.
Ich freue mich zu sehen, dass es Ihnen auch weiterhelfen kann.
~John
Betreff: Kreisdiagramme + WärmekartenHallo @John_Powell_JMP ,
Ich bin wirklich daran interessiert, mich daran zu versuchen, um zu sehen, ob ich es an einige der Berichte meines Unternehmens anpassen kann.
Sie erwähnen, dass Sie nach den Spalten gestapelt sind, die Sie interessieren, aber welche sind das? Ich habe die Datentabelle heruntergeladen, kann aber nicht herausfinden, welche Spalten zum Stapeln benötigt werden. Und generiert JMP das Kreisdiagramm automatisch als abschnittsweises „Bullseye“ oder ist dies eine separate Einstellung? So etwas habe ich noch nie gesehen. Es ist eine schöne Visualisierung und für mich neu, weshalb ich neugierig darauf bin.
Danke!,
DSBetreff: Kreisdiagramme + HeatmapsDurch das Stapeln der relevanten Spalten kann eine benutzerdefinierte Karte verwendet werden, um die gewünschte Visualisierung zu erzielen.
Hier ist ein Beispiel auf JMP public, das die von Ihnen bereitgestellten Daten verwendet.
Die benutzerdefinierte Karte und die geänderte Datentabelle finden Sie unter:
https://public.jmp.com/packages/5d5aa110f40f010268e63cf4
~John
Betreff: Kreisdiagramme + WärmekartenIch bin immer noch ratlos, also dachte ich, ich hänge die eigentliche Datendatei an. Grundsätzlich möchte ich die letzten fünf Spalten in ein Kreisdiagramm einfügen, in dem die Keilfarben die Farben in den Zellen widerspiegeln (umbrochen nach Probennummer). Ich fange an zu glauben, dass dies mit Graph Builder möglicherweise nicht möglich ist ...
Betreff: Kreisdiagramme + HeatmapsHallo ,
Ich beteilige mich zwar etwas spät an dieser Diskussion, versuche aber, eine sehr ähnliche Visualisierung zu erstellen. Besonders interessiert mich die Lösung „3.b“, da ich Kreisdiagramme auf einem Raster über Europa darstellen möchte (die Beschriftung ist in diesem Szenario überhaupt nicht lesbar).
Das Problem ist, dass der Hintergrund weiß ist, wenn ich Diagramme als Markierung verwende, was auf den Karten nicht so gut aussieht: Sie überlappen sich an den Ecken.
Obwohl ich den weißen Bereich durch Anpassen der Größe des Kreisdiagramms verkleinern kann, bleibt der weiße Hintergrund sichtbar. Gibt es eine Möglichkeit, diesen Hintergrund in JMP 17 transparent zu machen oder ihn vollständig zu entfernen?
Johanna
Betreff: Kreisdiagramme + HeatmapsHallo @johanna_younous ,
Willkommen im Gespräch.
Als ich mich zum ersten Mal an dieser Diskussion beteiligte, hatte ich in meinen Diagrammen auch weiße Hintergründe.
Als ich die oben erwähnte Präsentation hielt, hatte ich herausgefunden, wie man den Hintergrund transparent macht.
Ich habe das folgende JSL-Skript verwendet, um die weißen Pixel in meiner Bildtabelle transparent zu machen, wobei der Name der Spalte mit den Diagrammbildern "Graph" lautete.
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} );
);
Dadurch werden auch graue Pixel transparent, wenn die Rot-, Grün- und Blauanteile alle gleich sind. Ich hatte auch im Hintergrund etwas Grau.
Ich hoffe, das funktioniert für Sie.
~John
Betreff: Kreisdiagramme + HeatmapsVielen Dank @John_Powell_JMP ,
Leider funktioniert diese Schleife bei mir nicht vollständig, und ich habe Schwierigkeiten, den Grund dafür herauszufinden.
Wenn ich die gesamte Schleife durchlaufe, wird der weiße Hintergrund meiner Diagramme nicht entfernt:
);
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;
);
Wenn ich das aber Schritt für Schritt durchführe, wird das Update erfolgreich auf die erste Zeile angewendet!
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;
Das macht mich wahnsinnig. Ich vermute, es könnte an der Aktualisierungszeit liegen oder an etwas, das mit der Spalte „Ausdruckstyp“ zusammenhängt.
Ich wäre für jeden Hinweis sehr dankbar 
Johanna
Betreff: Kreisdiagramme + HeatmapsObwohl diese Lösung (und viele der anderen Beiträge) durchaus innovativ sind, muss ich sagen, dass ich die Tortendiagramme überhaupt nicht hilfreich finde (es erinnert mich an das Tufte-Zitat, das ich hier sinngemäß wiedergebe, da ich mich nicht mehr genau an die Quelle erinnere: „Das Einzige, was schlimmer ist als ein einziges dummes Tortendiagramm, sind mehrere dumme Tortendiagramme“). Donut-Diagramme sind, wie üblich, besser als Tortendiagramme, aber ich denke, Balkendiagramme eignen sich in diesem Fall viel besser. Bei den zahlreichen Vergleichen über die vier Dimensionen hinweg gibt es zwei Probleme: Erstens die Reihenfolge der Segmente und zweitens deren Größe. Balken lassen sich leichter anordnen als Tortenstücke, und auch die Größen sind im Vergleich zu Balken viel besser. Es mag durchaus andere Darstellungsformen geben, die noch besser funktionieren, aber ich finde diese Tortendiagramme wirklich nicht leicht verständlich.
Betreff: Kreisdiagramme + HeatmapsInzwischen ist es mir auf höchst überraschende Weise gelungen, es zum Laufen zu bringen (nachdem ich eine lange Reihe von Tests und Fehlschlägen durchlaufen hatte, wie dieses wirklich suboptimale Skript bezeugen kann).
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"
Das ist wirklich ein sehr, sehr seltsames Verhalten, aber da es funktioniert, sagen wir mal, das reicht: Ich habe viel zu viel Zeit mit diesem Problem verbracht ^^
Ich wäre nach wie vor sehr an jeder Erklärung dieses Phänomens interessiert.
Betreff: Kreisdiagramme + HeatmapsIch stimme Ihnen in diesem Punkt zu, dennoch ist es eine Anfrage meiner Stakeholder ... also Tortendiagramme (und noch schlimmer, Radardiagramme)!
Betreff: Kreisdiagramme + Heatmaps@johanna_younous ,
Ich freue mich, dass Sie eine Lösung gefunden und mit der Community geteilt haben, stimme Ihnen aber zu, dass es wahrscheinlich eine einfachere und effizientere Lösung gibt. Möglicherweise bieten „For Each“-Schleifen Vorteile gegenüber „For“-Schleifen.
Ich war überrascht zu sehen, dass Sie in der Funktion "Get Pixels" "rgba" verwendet haben, aber vielleicht hatten die Pixel in den Bildern nach einmaligem Ausführen des Skripts eine Alpha-Komponente.
In dem Fall, in dem ich mein Skript verwendet habe, befanden sich die Bilder in einer separaten Datentabelle und waren über einen virtuellen Join verknüpft. Dies kann sich von Ihrer Situation unterscheiden, wodurch sich die Änderung der Bilder bei mir sofort bemerkbar machte.
Vielleicht kann jemand aus der Community mit mehr JMP-Scripting-Erfahrung als ich eine einfachere Lösung oder Erklärung liefern.
Danke,
~John