Vi este post na Moz, que apresentava um funil de marketing segmentado:
Esse tipo de coisa teria muito valor no meu trabalho. O que não faço ideia é como visualizar dados brutos para mostrar um funil segmentado como este. A ideia é que os leads de vendas venham de diferentes fontes (que usamos para segmentar os dados) e passem por vários estágios no momento em que são convertidos em um acordo. De cada estágio para outro, alguns desaparecem. A largura de cada fatia é determinada pelo número absoluto de derivações em cada uma. [ EDIT : Observe que a imagem usada aqui para referência é enganosa quando se trata dos números especificados à direita de cada fatia. Parece não haver relação entre a largura da fatia e o número. A imagem deve ser tomada apenas como referência ao design do funil segmentado].
Enfim, alguma idéia de como visualizá-lo? Se possível, eu adoraria ter uma maneira de fazer isso em Python.
Aqui está um documento do Google com alguns dados fictícios, se alguém precisar ...
Ansioso por suas idéias. Obrigado!
fonte
Respostas:
Esse gráfico exibe uma tabela de contingência bidirecional cujos dados são aproximadamente os seguintes:
Existem inúmeras maneiras de construir esse enredo. Por exemplo, você pode calcular as posições de cada amostra retangular de cor e colocar cada amostra separadamente. Em geral, porém, ajuda a encontrar uma descrição sucinta de como um gráfico representa dados.
Como ponto de partida, podemos vê-lo como uma variação de um gráfico de barras empilhadas.
Esse gráfico dificilmente precisa de uma descrição: por familiaridade, sabemos que cada linha de retângulos corresponde a cada linha da tabela de contingência; que comprimentos dos retângulos são diretamente proporcionais às suas contagens; que eles não se sobrepõem; e que as cores correspondem às colunas da tabela.
Se convertermos esta tabela em um "quadro de dados" ou "tabela de dados" com uma linha por contagem com campos indicando o nome da linha, o nome da coluna e a contagem, plotar isso normalmente significa chamar uma função adequada e estipular onde encontrar os nomes das linhas, os nomes das colunas e as contagens. Usando uma implementação de Gramática de Gráficos (o pacote para ), isso seria algo comoX
ggplot2
R
Os detalhes do gráfico, como a largura de uma linha de barras e quais cores usar, geralmente precisam ser estipulados explicitamente. Como isso é feito depende do ambiente de plotagem (e isso é relativamente pouco interessante: você só precisa procurar).
Essa implementação específica da gramática dos gráficos oferece pouca flexibilidade no posicionamento das barras. Uma maneira de produzir a aparência desejada, com o mínimo esforço, é inserir uma categoria invisível na base de cada barra para que as barras fiquem centralizadas. Um pouco de reflexão sugere que a contagem falsa necessária para centralizar cada barra deve ser a média do comprimento total da barra e a da barra mais longa. Para este exemplo, isso seria uma coluna inicial com os valores
Aqui está o gráfico de barras empilhadas resultante mostrando os dados falsos em cinza claro:
A figura desejada é criada tornando os gráficos da coluna falsa invisíveis:
A descrição Gramática dos gráficos do gráfico não precisa ser alterada: simplesmente fornecemos uma tabela de contingência diferente para ser renderizada de acordo com a mesma descrição (e substituímos a atribuição de cores padrão para a coluna falsa).
Comentários
Esses gráficos são honestos: a extensão horizontal de cada amostra colorida é diretamente proporcional aos dados subjacentes, sem distorção. Compará-los com o original (na pergunta) revela quão extrema é sua distorção ( fator de mentira de Tufte ).
Se desejar mostrar detalhes na parte inferior do "funil", considere representar as contagens por área, e não por comprimento. Você pode tornar os comprimentos das barras proporcionais às raízes quadradas dos comprimentos totais e suas larguras (na direção vertical) também proporcionais às raízes quadradas. Agora, a parte inferior do "funil" teria cerca de um vigésimo do comprimento mais longo, em vez de um quatrocésimo, permitindo a exibição de alguns detalhes. Infelizmente, a
ggplot2
implementação não permite mapear uma variável para a largura da barra e, portanto, é necessária uma solução alternativa mais envolvente (uma que realmente descreva cada retângulo individualmente). Talvez haja uma implementação Python que seja mais flexível.Referências
Edward Tufte, a exibição visual de informações quantitativas . Cheshire Press 1984.
Leland Wilkinson, A gramática dos gráficos. Springer 2005.
fonte
Você pode tentar usar o funil segmentado em plotagem em python para construí-lo. Aqui está um tutorial: https://moderndata.plot.ly/segmented-funnel-charts-in-python-using-plotly/
Espero que isto ajude.
fonte