Ich habe diesen Beitrag auf Moz gesehen, in dem ein segmentierter Marketing-Trichter vorgestellt wurde:
So etwas hätte in meinem Job einen ziemlichen Wert. Was ich nicht weiß, ist, wie man Rohdaten visualisiert, um einen segmentierten Trichter wie diesen zu zeigen. Die Idee ist, dass Vertriebs-Leads aus verschiedenen Quellen stammen (nach denen wir die Daten segmentieren) und bis zur Umwandlung in ein Geschäft mehrere Phasen durchlaufen. Von jeder Stufe zur nächsten fallen einige ab. Die Breite jeder Schicht wird durch die absolute Anzahl der Ableitungen in jeder Schicht bestimmt. [ BEARBEITEN : Beachten Sie, dass das hier als Referenz verwendete Bild irreführend ist, wenn es um die Zahlen geht, die rechts von jedem Slice angegeben sind. Es scheint keine Beziehung zwischen der Breite des Slice und der Zahl zu geben. Das Bild sollte nur als Referenz für das Design des segmentierten Trichters dienen.
Wie auch immer, eine Idee, wie man es visualisiert? Wenn möglich, würde ich gerne eine Möglichkeit haben, dies in Python zu tun.
Hier ist ein Google Doc mit einigen Dummy-Daten, falls jemand etwas benötigt ...
Ich freue mich auf Ihre Erkenntnisse. Vielen Dank!
quelle
Antworten:
Dieses Diagramm zeigt eine Zwei-Wege- Kontingenztabelle an, deren Daten ungefähr folgende sind:
Es gibt unzählige Möglichkeiten, diese Handlung zu konstruieren. Sie können beispielsweise die Positionen jedes rechteckigen Farbfelds berechnen und jedes Feld separat plattieren. Im Allgemeinen ist es jedoch hilfreich, eine kurze Beschreibung zu finden, wie ein Diagramm Daten darstellt.
Als Ausgangspunkt können wir dieses als eine Variation eines gestapelten Balkendiagramms betrachten.
Diese Darstellung bedarf kaum einer Beschreibung: Durch Vertrautheit wissen wir, dass jede Reihe von Rechtecken jeder Reihe der Kontingenztabelle entspricht; dass die Längen der Rechtecke direkt proportional zu ihrer Anzahl sind; dass sie sich nicht überlappen; und dass die Farben den Spalten der Tabelle entsprechen.
Wenn wir diese Tabelle in einen "Datenrahmen" oder eine "Datentabelle" mit einer Zeile pro Zählung mit Feldern konvertieren , die den Zeilennamen, den Spaltennamen und die Anzahl angeben, bedeutet das Plotten normalerweise, eine geeignete Funktion aufzurufen und festzulegen, wo sie zu finden ist die Zeilennamen, die Spaltennamen und die Anzahl. Bei Verwendung einer Grammatik-Grafik- Implementierung (dem Paket für ) würde dies ungefähr so aussehenX
ggplot2
R
Die Details der Grafik, z. B. wie breit eine Reihe von Balken ist und welche Farben verwendet werden sollen, müssen normalerweise explizit festgelegt werden. Wie das gemacht wird, hängt von der Plotumgebung ab (und ist daher von relativ geringem Interesse: Sie müssen es nur nachschlagen).
Diese spezielle Implementierung der Grammatik der Grafiken bietet wenig Flexibilität bei der Positionierung der Balken. Eine Möglichkeit, mit minimalem Aufwand das gewünschte Aussehen zu erzielen, besteht darin, an der Basis jedes Balkens eine unsichtbare Kategorie einzufügen, sodass die Balken zentriert sind. Ein wenig Nachdenken legt nahe, dass die falsche Anzahl, die zum Zentrieren jedes Balkens benötigt wird, der Durchschnitt der Gesamtlänge des Balkens und der des längsten Balkens sein muss. In diesem Beispiel wäre dies eine Anfangsspalte mit den Werten
Hier ist das resultierende gestapelte Balkendiagramm, das die gefälschten Daten in hellgrau zeigt:
Die gewünschte Figur wird erstellt, indem die Grafiken für die gefälschte Spalte unsichtbar gemacht werden:
Die Beschreibung der Grammatik der Grafik des Diagramms muss nicht geändert werden: Wir haben einfach eine andere Kontingenztabelle angegeben, die gemäß derselben Beschreibung gerendert werden soll (und die Standardfarbzuweisung für die gefälschte Spalte überschrieben).
Bemerkungen
Diese Grafiken sind ehrlich: Die horizontale Ausdehnung jedes farbigen Patches ist ohne Verzerrung direkt proportional zu den zugrunde liegenden Daten. Ein Vergleich mit dem Original (in der Frage) zeigt, wie extrem die Verzerrung ist (Tuftes Lügenfaktor ).
Wenn Details am unteren Rand des "Trichters" angezeigt werden sollen, sollten Sie die Anzahl nach Fläche und nicht nach Länge darstellen. Sie können die Längen der Balken proportional zu den Quadratwurzeln der Gesamtlängen und ihre Breite (in vertikaler Richtung) auch proportional zu den Quadratwurzeln machen. Jetzt wäre der Boden des "Trichters" etwa ein Zwanzigstel der längsten Länge und nicht ein Vierhundertstel davon, so dass einige Details sichtbar werden könnten. Leider
ggplot2
erlaubt die Implementierung nicht, eine Variable der Balkenbreite zuzuordnen, und daher ist eine aufwändigere Umgehung erforderlich (eine, die tatsächlich jedes Rechteck einzeln beschreibt). Vielleicht gibt es eine Python-Implementierung, die flexibler ist.Verweise
Edward Tufte, Die visuelle Darstellung quantitativer Informationen . Cheshire Press 1984.
Leland Wilkinson, Die Grammatik der Grafik. Springer 2005.
quelle
Sie können versuchen, einen plottenweise segmentierten Trichter in Python zu verwenden, um ihn zu erstellen. Hier ist ein Tutorial: https://moderndata.plot.ly/segmented-funnel-charts-in-python-using-plotly/
Hoffe das hilft.
quelle