Este gráfico muestra una tabla de contingencia bidireccional cuyos datos son aproximadamente estos:
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
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í comoXggplot2
R
ggplot(X, aes(Outcome, Count, fill=Referral)) + geom_col()
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
254478.0 0.0 301115.0 897955.0 993610.5 1019817.0
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.