Vi esta publicación en Moz que presentaba un embudo de marketing segmentado:
Este tipo de cosas tendría bastante valor en mi trabajo. Lo que no tengo idea es cómo visualizar datos sin procesar para mostrar un embudo segmentado como este. La idea es que los clientes potenciales de ventas provienen de diferentes fuentes (que usamos para segmentar los datos) y pasan por varias etapas cuando se convierten en un acuerdo. De cada etapa a otra, algunos caen. El ancho de cada segmento está determinado por el número absoluto de clientes potenciales en cada uno. [ EDITAR : observe que la imagen utilizada aquí como referencia es engañosa cuando se trata de los números especificados a la derecha de cada segmento. Parece que no hay relación entre el ancho de la porción y el número. La imagen solo debe tomarse como referencia al diseño del embudo segmentado].
De todos modos, ¿alguna idea de cómo visualizarlo? Si es posible, me encantaría tener una manera de hacerlo en Python.
Aquí hay un Google Doc con algunos datos ficticios si alguien necesita algunos ...
Esperamos sus ideas. ¡Gracias!
fuente
Respuestas:
Este gráfico muestra una tabla de contingencia bidireccional cuyos datos son aproximadamente estos:
Hay miles de formas de construir esta trama. Por ejemplo, podría calcular las posiciones de cada parche rectangular de color y colocar cada parche por separado. Sin embargo, en general, es útil encontrar una descripción sucinta de cómo una gráfica representa los datos.
Como punto de partida, podemos ver este como una variación de un gráfico de barras apiladas.
Esta gráfica apenas necesita una descripción: a través de la familiaridad sabemos que cada fila de rectángulos corresponde a cada fila de la tabla de contingencia; que las longitudes de los rectángulos son directamente proporcionales a sus recuentos; que no se superponen; y que los colores corresponden a las columnas de la tabla.
Si convertimos esta tabla en un "marco de datos" o "tabla de datos" tiene una fila por conteo con campos que indican el nombre de la fila, el nombre de la columna y el conteo, entonces trazarlo normalmente equivale a llamar a una función adecuada y estipular dónde encontrar los nombres de fila, los nombres de columna y los recuentos. Usando una implementación de Gramática de Gráficos (el paquete para ) esto sería algo así comoX
ggplot2
R
Los detalles del gráfico, como qué tan ancha es una fila de barras y qué colores usar, generalmente deben estipularse explícitamente. La forma en que se hace depende del entorno de trazado (y, por lo tanto, es de relativamente poco interés: solo hay que buscarlo).
Esta implementación particular de la Gramática de Gráficos proporciona poca flexibilidad en el posicionamiento de las barras. Una forma de producir el aspecto deseado, con un esfuerzo mínimo, es insertar una categoría invisible en la base de cada barra para que las barras estén centradas. Un poco de reflexión sugiere que la cuenta falsa necesaria para centrar cada barra debe ser el promedio de la longitud total de la barra y la de la barra más larga. Para este ejemplo, esta sería una columna inicial con los valores
Aquí está el gráfico de barras apiladas resultante que muestra los datos falsos en gris claro:
La figura deseada se crea haciendo invisibles los gráficos de la columna falsa:
La descripción de la Gramática de Gráficos de la trama no necesita cambiar: simplemente proporcionamos una tabla de contingencia diferente para representarla de acuerdo con la misma descripción (y anulamos la asignación de color predeterminada para la columna falsa).
Comentarios
Estos gráficos son honestos: la extensión horizontal de cada parche de color es directamente proporcional a los datos subyacentes, sin distorsión. Compararlos con el original (en la pregunta) revela cuán extrema es su distorsión ( Factor de mentira de Tufte ).
Si se desea mostrar detalles en la parte inferior del "embudo", considere representar los recuentos por área en lugar de longitud. Puede hacer que las longitudes de las barras sean proporcionales a las raíces cuadradas de las longitudes totales y sus anchos (en la dirección vertical) también proporcionales a las raíces cuadradas. Ahora la parte inferior del "embudo" sería aproximadamente una vigésima parte de la longitud más larga, en lugar de una cuarta parte de ella, lo que permitiría mostrar algunos detalles. Desafortunadamente, la
ggplot2
implementación no permite asignar una variable al ancho de la barra, por lo que se necesita una solución más complicada (una que de hecho describa cada rectángulo individualmente). Quizás haya una implementación de Python que sea más flexible.Referencias
Edward Tufte, La visualización de información cuantitativa . Cheshire Press 1984.
Leland Wilkinson, La gramática de los gráficos. Springer 2005.
fuente
Puede intentar usar un embudo segmentado en Python para construirlo. Aquí hay un tutorial: https://moderndata.plot.ly/segmented-funnel-charts-in-python-using-plotly/
Espero que esto ayude.
fuente