Earn money by answering our surveys

Register now!

Tutorial: Wie man einen Joyplot mit Tableau erstellt

Earn up to 50€ by participating in one of our paid market research.

Register now!

Nachdem ich Ihnen erklärt habe, wie Sie eine isometrische Hexmap erstellen können, wende ich mich nun einem schwierigeren Thema zu: Dem Erstellen eines Joyplots mit Tableau.

Ich habe einen Joyplot in der Visualisierung verwendet, die ich bei IronViz eingereicht habe. Da diese Art von Diagramm relativ selten ist und ich einige Schwierigkeiten hatte, es richtig hinzubekommen, dachte ich, ein Tutorial wäre willkommen.

Zusammenfassung

Was ist ein Joyplot?

Der Joyplot (oder „Ridgeline-Plot“, siehe Herkunft des Namens im folgenden Absatz) besteht aus der vertikalen Gegenüberstellung, auf derselben horizontalen Achse, von Histogrammen, Verteilungskurven oder Zeitreihen.

Diese Art der Datenvisualisierung ist besonders nützlich, um statistische Verteilungen zu vergleichen oder Unterschiede zwischen Zeitreihen zu zeigen.

Die (Zweckentfremdung), die ich in Tableau vorgenommen habe, verwendet die Spitzen mehrerer Verteilungskurven, um die Illusion einer geografischen Visualisierung zu erzeugen. Die Inspiration kam von der Arbeit von Alexander Varlamov, dessen Tutorial ich gefolgt bin.

Die Herkunft des Namens „Joyplot“

Bei meinen Recherchen zur Konstruktion des Joyplots habe ich den Ursprung dieses Namens entdeckt. Konstantin Greger erklärt auf seinem Blog, dass sich der Name von der Illustration auf dem Album „Unknown Pleasures“ der englischen Band „Joy Division“ (aktiv von 1976 bis 1980) ableitet. In Ermangelung von „Rock“-Kultur hatte ich diese Band, deren Melodien mir dennoch bekannt waren, vermisst: „Love will tear us apart“.


Der Name „joyplot“ scheint 2017 aufgetaucht zu sein, nachdem Jenny Brian den Namen in Anlehnung an das Album Joy Division vorgeschlagen hatte.

Es folgte eine Mini-Polemik, weil „Joy Division“ der Name für Gruppen von jüdischen Frauen war, die die sexuellen Bedürfnisse von Nazi-Soldaten in Konzentrationslagern befriedigten. Seitdem wurde der Begriff „Ridgeline Plots“ vorgeschlagen. Für eine ausführlichere Diskussion empfehle ich diesen ausgezeichneten Artikel.


Eine Schritt-für-Schritt-Anleitung zum Erstellen des Joyplots mit Tableau

Natürlich ist es kein Problem, einen „klassischen“ Joyplot mit Tableau zu erstellen. Komplizierter wird es, wenn Sie den Joyplot umleiten möchten, um Spitzen der Dichte innerhalb eines geografischen Bereichs darzustellen.

Das ist die Herausforderung dieses Tutorials, mit dem Sie die Joyplots verwenden können, um eine Karte wie die unten abgebildete zu erstellen.

In den folgenden Abschnitten finden Sie alle Erklärungen, die notwendig sind, um Schritt für Schritt die gleiche Art der Visualisierung wie die oben gezeigte zu reproduzieren.

Um das Prinzip zu verstehen, muss man sich vor Augen halten, dass hinter dieser Art der Visualisierung ein „Raster“ steht, von dem einige Punkte mit einem Wert verbunden sind und andere nicht.

Ein „Peak“ wird nur für die Quadrate angezeigt, die mit einem Wert verbunden sind (die im nebenstehenden Diagramm orange gefärbten Maschen).

Das heißt, es ist Zeit, zur Sache zu kommen.

 

 


Schritt 1: Verarbeitung von Breitengrad und Längengrad

Als erstes müssen Sie die geografischen Koordinaten (Breitengrad, Längengrad) Ihrer Punkte aufrunden, damit sie in das Gitter passen. Dazu müssen Sie sich vorher Gedanken über den „Schritt“ machen, den Sie annehmen wollen. Ein zu feiner Schritt könnte die Tabelle „verkeilen“. Ein zu breiter Schritt wird kein optisch gelungenes Ergebnis liefern.

Für meine Visualisierung der fettleibigen Bevölkerung nach Landkreisen in Amerika hatte ich mich zunächst für einen 0,01-Schritt entschieden. Ich folgte damit dem Rat von Alexander Varlamov. Ein solch kleiner Schritt funktioniert für kleine geografische Gebiete (z.B. in der Größenordnung einer Stadt), aber nicht für ein so großes Land wie die Vereinigten Staaten. Also habe ich auf einen Schritt von 0,1 zurückgegriffen.

Nachdem Sie eine interne Verknüpfung der Mittelpunkte der einzelnen Landkreise vorgenommen haben, müssen Sie nur noch eine Aufrundung vornehmen. Die daraus resultierenden berechneten Variablen werden LatRound und LongRound genannt.

LatRound = ROUND([Latitude],1)

LongRound = ROUND([Longitude],1)

Schritt 2: die Erstellung eines Koordinatengitters

Der zweite Schritt besteht darin, die Daten in Tableau zu „verdichten“, indem ein Gitter erstellt wird. Die Koordinaten der Gitterzellen werden verwendet, um die Werte für Fettleibigkeit nach Landkreis zuzuordnen.

Um dieses Gitter zu erstellen, erstellen Sie eine Tabelle in Excel, die die Werte der Längengrade in den Zeilen und der Breitengrade in den Spalten enthält. Ein kleiner Pivot später, und Sie erhalten eine Tabelle wie diese. Vergessen Sie nicht, zu überprüfen, welches die minimalen und maximalen Werte von Breiten- und Längengrad sind, die Sie benötigen.


Dann machen Sie einfach eine rechte Verknüpfung auf dieser Excel-Tabelle. Die rechte Verknüpfung erlaubt es, die Maschen, für die kein Wert zugeordnet ist, leer zu lassen.

Die Breiten- und Längenwerte des Gitters werden jeweils als „Breitengradgitter“ und „Längengradgitter“ bezeichnet.

Schritt 3: Eliminierung von leeren Punkten außerhalb des geografischen Gebiets

Im nächsten Schritt werden wir die Punkte eliminieren, die außerhalb des geografischen Bereichs liegen, den wir abdecken möchten. Dies ist besonders wichtig, wenn Sie z. B. die Grenzen eines Landes rekonstruieren wollen.

Beginnen wir damit, zu visualisieren, welchen Gitterzellen keine Werte zugeordnet sind. Mit der folgenden berechneten Variablen ist dies sehr einfach möglich.

NullDotCheck = IIF(ISNULL([Obesity prevalence (%)]),TRUE,FALSE)

Wenn wir diese berechnete Variable als Richtwert für die Farbe verwenden, erhalten wir dies. Die Grenzen der Vereinigten Staaten beginnen sich langsam abzuzeichnen, aber es gibt noch einiges zu tun.

Wir werden nun alle Punkte eliminieren, die außerhalb der geografischen Grenzen der Vereinigten Staaten liegen. Mit LOD-Ausdrücken können wir dies schnell erledigen. Wir erstellen die berechnete Variable „NullDotFilter“ wie folgt:

[longitude grid]< { FIXED [latitude grid]: MIN({ FIXED [latitude grid], [longitude grid]: MIN(IIF(ISNULL([Obesity prevalence (%)])=false,[longitude grid], NULL))})}
OR
[longitude grid]> { FIXED [latitude grid]: MAX({ FIXED [latitude grid], [longitude grid]: MIN(IIF(ISNULL([Obesity prevalence (%)])=false,[longitude grid], NULL))})}

Sobald die Variable „NullDotFilter“ als Filter angewendet wird, erhalten Sie (oben) eine Visualisierung, die anfängt, wie die Vereinigten Staaten auszusehen.

Unten sehen Sie, dass die Karte aus horizontalen Linien besteht, die in einem Abstand von 0,1 Breitengraden zueinander gezeichnet sind. Da es noch einige leere Gitter innerhalb des Gebiets gibt (blaue Punkte im oberen Teil des Diagramms), müssen diese Punkte auf der richtigen Linie des Breitengrads platziert werden. Ich habe daher eine berechnete Variable „Null Daten“ erstellt:

zero data = IFNULL([Obesity prevalence (%)],0)

Kommen wir nun zum spaßigsten Teil, der Programmierung der „Peaks“ des Joyplots.

Schritt 4: Höhe der Peaks

Die berechnete Variable „Y“ wird so erstellt, dass die Höhe des „Peaks“ eine Funktion des Wertes ist, der jedem Punkt auf dem Raster zugewiesen ist. In meinem Fall erwies sich die Übung als komplizierter als erwartet, weil die von mir verarbeiteten Werte (Prozentsatz der fettleibigen Menschen pro Landkreis) relativ nahe beieinander lagen.

Y = max([latitude grid])+(4 * (SUM([zero data]) / WINDOW_MAX(SUM([zero data]))))

Um die Unterschiede zwischen den Peaks künstlich zu erhöhen, habe ich einen Wertfaktor von 4 eingeführt. Unten sehen Sie den Unterschied zwischen einem Faktor von 1 und einem Faktor von 4.

Vergessen Sie nicht, die Variable „Breitengradgitter“ im Detail (als diskreten Wert) anzugeben.

Trotzdem waren die Unterschiede nicht sehr sichtbar. Dies veranlasste mich, Farben in Form von Quartilen anzuwenden.

Schritt 5: Farben nach dem Quartil

Um die Unterschiede besser sichtbar zu machen und um wertlose Gittermaschen zu eliminieren, habe ich mich für eine Quartilsfärbung entschieden. Das 1. Quartil entspricht dem Wert 0 und kann der Hintergrundfarbe des Dashboards zugewiesen werden. Die Technik und ihren Ursprung habe ich bereits mehrfach erklärt (siehe insbesondere mein Tutorial über die isometrische Hexmap).

rank obesity US counties = {FIXED [Year],[County] : AVG([Obesity prevalence (%)])}

rank percentile counties = RANK_PERCENTILE(AVG([rank obesity US counties]))

rank color by quartile =

if [rank percentile counties]<=1/[quantile]
then 1/[quantile]
ELSEIF [rank percentile counties]<=2/[quantile]
then 2/[quantile]
ELSEIF [rank percentile counties]<=3/[quantile]
then 3/[quantile]
ELSEIF [rank percentile counties]<=4/[quantile]
then 4/[quantile]
END

Die Variable „Rangfarbe nach Quartil“ ermöglicht es uns daher, unsere Spitzenwerte einzufärben, um sie besser sichtbar zu machen.


Einige zusätzliche Gedanken zum Joyplot

Der Joyplot ist zweifellos nicht die einfachste Visualisierung, die mit Tableau erstellt werden kann. Er ist auch weit davon entfernt, für geschäftsorientierte Anwendungen geeignet zu sein. Wie Alexander Varlamov jedoch betonte, ist seine Verwendung für journalistische Zwecke ideal. In der Tat ist der Joyplot visuell attraktiv, leicht verständlich und eignet sich daher gut zur Information der Öffentlichkeit.

Aus Gründen der Effizienz rate ich Ihnen jedoch, vorher zu prüfen, ob die Daten, die Sie visualisieren wollen, sehr unterschiedliche Werte annehmen. Die ansprechendsten Joyplots erhält man, wenn eine große Streuung der Daten vorliegt. Im Nachhinein denke ich auch, dass die Anwendung des Joyplots auf große Gebiete wahrscheinlich zu minderwertigen Ergebnissen führen wird. Die Darstellung der Zwangsräumungen in der Region San Francisco (siehe hier) scheint mir deutlich von der Anwendung des Joyplots zu profitieren.

Schlagwörter:

Kommentar absenden

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.