Comment visualisez-vous un entonnoir segmenté? (et pourriez-vous le faire avec Python?)

9

J'ai vu ce post sur Moz qui présentait un entonnoir marketing segmenté:entrez la description de l'image ici

Ce genre de chose aurait beaucoup de valeur dans mon travail. Ce que je n'ai aucune idée, c'est comment visualiser les données brutes pour montrer un entonnoir segmenté comme celui-ci. L'idée est que les prospects proviennent de différentes sources (que nous utilisons pour segmenter les données) et passent par plusieurs étapes au moment où ils se convertissent en accord. De chaque étape à l'autre, certains tombent. La largeur de chaque tranche est déterminée par le nombre absolu de dérivations dans chacune. [ EDIT : Notez que l'image utilisée ici pour référence est trompeuse en ce qui concerne les nombres spécifiés à droite de chaque tranche. Il ne semble pas y avoir de relation entre la largeur de la tranche et le nombre. L'image ne doit être prise que comme référence à la conception de l'entonnoir segmenté].

Quoi qu'il en soit, une idée de comment le visualiser? Si possible, j'aimerais avoir un moyen de le faire en Python.

Voici un document Google avec quelques données factices si quelqu'un en a besoin ...

Dans l'attente de vos idées. Merci!

Optimesh
la source
5
Je trouve l'illustration déroutante en raison de l'énorme Facteur de Lie qui y est intégré: les niveaux successifs de "l'entonnoir" utilisent différentes échelles qui changent de façon irrégulière. Ainsi, les largeurs des bandes ne sont pas déterminées par les nombres absolus dans chacune - du moins pas de manière facilement compréhensible ou visualisable. Alors, que demandez-vous: s'il existe de meilleures façons de visualiser ces données ou comment créer ce graphique en Python?
whuber
Pour travailler dans n'importe quel logiciel, vous pouvez généralement simplement incorporer une catégorie de décalage pour les barres empilées, puis la rendre invisible. Voici un exemple avec cette même feuille de calcul Google. Vous pouvez voir que c'est une information inefficace. pour les catégories réduites à rien dans cet exemple.
Andy W
1
@whuber Salut. Je ne suis pas sûr de suivre. Chaque niveau est un nombre absolu ... et chaque niveau est un sous-groupe du précédent. Veuillez expliquer pourquoi l'échelle change alors de façon irrégulière. Merci!
Optimesh
3
Le segment supérieur représente 1,5 million de visites et couvre environ 500 pixels sur mon écran: un pixel = 3000 visites. Le segment inférieur représente 5000 visites et s'étend sur environ 150 pixels sur mon écran, au lieu de moins de 2 (comme l'a souligné @Andy avec son exemple). C'est une exagération d'environ 100 à 1. Étant donné que le graphique de cette question ne semble pas se soucier d'une telle exagération, il semble inutile de redimensionner les segments: vous obtiendriez de meilleures informations en les rendant tous de la même longueur et du graphique serait moins trompeur.
whuber
1
@whuber Oh, je vois ce que tu veux dire maintenant. Oui, je viens d'apporter cette image comme exemple à ce que je cherche à faire visuellement. Les chiffres eux-mêmes sont trompeurs, sans aucun doute.
Optimesh

Réponses:

3

Ce graphique affiche un tableau de contingence bidirectionnel dont les données sont approximativement les suivantes:

                      Branded Unbranded Social Referring Direct   RSS
First-time...          177276    472737  88638    265915 472737 59092
Return Visits...       236002    629339 118001    354003 629339 78667
4+ Visits in ...       166514    444037  83257    249771 444037 55505
10+ Visit in ...        28782     76751  14391     43172  76751  9594
At Least One Visit...    6707     17886   3354     10061  17886  2236
Last Touch...             660      1759    330       989   1759   220

Il existe une myriade de façons de construire cette intrigue. Par exemple, vous pouvez calculer les positions de chaque patch rectangulaire de couleur et plaquer séparément chaque patch. En général, cependant, cela aide à trouver une description succincte de la façon dont un tracé représente les données.

Comme point de départ, nous pouvons voir celui-ci comme une variation d'un graphique à barres empilées.

Figure 1: graphique à barres empilées.

Ce tracé n'a guère besoin d'être décrit: par familiarité, nous savons que chaque ligne de rectangles correspond à chaque ligne du tableau de contingence; que les longueurs des rectangles sont directement proportionnelles à leurs dénombrements; qu'ils ne se chevauchent pas; et que les couleurs correspondent aux colonnes du tableau.

Si nous convertissons ce tableau en un "bloc de données" ou un "tableau de données" ayant une ligne par comptage avec des champs indiquant le nom de la ligne, le nom de la colonne et le nombre, le traçage revient généralement à appeler une fonction appropriée et à spécifier où trouver les noms de ligne, les noms de colonne et les nombres. En utilisant une grammaire d' implémentation graphique (le package pour ), cela ressemblerait à quelque chose commeXggplot2R

ggplot(X, aes(Outcome, Count, fill=Referral)) + geom_col() 

Les détails du graphique, tels que la largeur d'une rangée de barres et les couleurs à utiliser, doivent généralement être stipulés explicitement. La façon dont cela se fait dépend de l'environnement de traçage (et n'a donc que peu d'intérêt: il suffit de le rechercher).

Cette implémentation particulière de la grammaire des graphiques offre peu de flexibilité dans le positionnement des barres. Une façon de produire l'apparence souhaitée, avec un minimum d'effort, consiste à insérer une catégorie invisible à la base de chaque barre afin que les barres soient centrées. Un peu de réflexion suggère que le faux compte nécessaire pour centrer chaque barre doit être la moyenne de la longueur totale de la barre et celle de la barre la plus longue. Pour cet exemple, ce serait une colonne initiale avec les valeurs

 254478.0       0.0  301115.0  897955.0  993610.5 1019817.0 

Voici le graphique à barres empilées résultant montrant les fausses données en gris clair:

Figure 2

La figure souhaitée est créée en rendant invisibles les graphiques de la fausse colonne:

figure 3

La description de la grammaire des graphiques de l'intrigue n'a pas besoin de changer: nous avons simplement fourni une table de contingence différente à rendre selon la même description (et a remplacé la couleur par défaut pour la fausse colonne).

commentaires

Ces graphiques sont honnêtes: l'étendue horizontale de chaque patch coloré est directement proportionnelle aux données sous-jacentes, sans distorsion. Les comparer à l'original (dans la question) révèle à quel point sa distorsion est extrême ( Lie Factor de Tufte ).

Si vous souhaitez afficher les détails au bas de l '«entonnoir», pensez à représenter les nombres par zone plutôt que par longueur. Vous pouvez rendre les longueurs des barres proportionnelles aux racines carrées des longueurs totales et leurs largeurs (dans le sens vertical) également proportionnelles aux racines carrées. Maintenant, le fond de l '"entonnoir" serait d'environ un vingtième de la longueur la plus longue, plutôt que d'un quatre centième, ce qui permettrait de montrer certains détails. Malheureusement, l' ggplot2implémentation ne permet pas de mapper une variable à la largeur de la barre, et donc un contournement plus complexe est nécessaire (celui qui décrit en effet chaque rectangle individuellement). Il existe peut-être une implémentation Python plus flexible.

Références

Edward Tufte, L'affichage visuel de l'information quantitative . Cheshire Press 1984.

Leland Wilkinson, La grammaire des graphiques. Springer 2005.

whuber
la source