Enquetes de "escolha ranqueada" não funcionam corretamente com gráficos de pizza

:information_source: Visão Geral

O uso do tipo de gráfico Pizza com enquetes de Escolha Classificada produz resultados incorretos. Cada opção recebe um voto, independentemente de como o usuário realmente classificou suas escolhas. Esse comportamento torna o gráfico enganoso e incompatível com a lógica de escolha classificada.

:walking_woman: Passos para reproduzir

  1. Clique em Criar Enquete no composer.
  2. Abra Opções avançadas (ícone de engrenagem).
  3. Preencha os campos da enquete (opcional), mas selecione “Pizza” em vez de “Barra” para o tipo de gráfico.
  4. Role de volta para o topo e selecione Escolha Classificada como o tipo de enquete.
  5. Salve e publique a enquete.

Neste ponto, a enquete estará usando o tipo de gráfico Pizza, que não foi projetado para funcionar com votação de escolha classificada.

:white_check_mark: Resultados esperados

O sistema deve:

  • Mudar automaticamente para o gráfico Barra quando “Escolha Classificada” for selecionado, ou
  • Impedir que o usuário selecione Pizza para enquetes de escolha classificada.

:x: Resultados observados

A enquete usa o gráfico Pizza e conta um voto por opção, mesmo que um usuário tenha classificado apenas uma ou algumas escolhas. O gráfico exibe todas as opções igualmente, tornando os resultados sem sentido:

:books: Contexto adicional

Solução temporária aplicada:

poll = Poll.find_by(id: 123)
poll.chart_type = 'bar'
poll.save

Atualizar manualmente o tipo de gráfico da enquete de pizza para bar no console corrige o problema e restaura os resultados precisos:

3 curtidas

Para sua informação, um caso de uso interessante @merefield

1 curtida

Este não é um caso de teste válido.

O sistema de Voto Preferencial (Ranked Choice) não possui um gráfico suportado no núcleo no momento — por decisão.

Ele nunca foi destinado a ser visualizado em um gráfico de pizza. O Voto Preferencial consiste em rodadas, e isso não pode ser representado em um único gráfico de pizza.

O bug aqui, se houver, provavelmente é alguém conseguir selecionar um gráfico quando a interface deveria ter impedido. Alguém alterou o código de configuração para permitir isso? Dito isso, você sempre pôde “hackear” o markdown inicial para alterar os atributos após o “wizard” (o que não é recomendado).

Eu havia oferecido um gráfico adequado, um diagrama de Sankey, há algum tempo, que funcionava, mas o Discourse recusou a mesclá-lo porque adiciona uma biblioteca dependente (embora bem suportada e popular). Tudo bem.

Estou disposto a receber financiamento para atualizar esse código para os padrões modernos e preparar um PR (Pull Request) se o CDCK mudar sua posição sobre a incorporação do Sankey.

Meu fork do plugin mostra um Sankey para o Voto Preferencial. É provável que esteja muito desatualizado e precise de manutenção, já que ninguém está financiando sua manutenção:

Aqui está uma seleção representativa das alterações para o Sankey:

Sinta-se à vontade para fazer o que quiser com isso.

É bem legal, se posso dizer assim.

Definitivamente é melhor que um gráfico de pizza!! :sweat_smile:

Recomendo que isso seja movido para Contribute > Feature, com o pedido de recurso sendo:

  • adicionar uma visualização adequada para o Voto Preferencial.
1 curtida

Este gráfico de barras de 3 cores é minha proposta de como as pesquisas de RCV devem ser visualizadas:

Votos da primeira rodada, votos transferidos nas demais rodadas, votos transferidos na rodada final.

1 curtida

Sim, um gráfico de barras segmentado poderia preservar as informações sobre a origem da transferência e os ganhos rodada a rodada, o que provavelmente captura a maior parte das informações úteis de um diagrama de Sankey em uma interface muito mais simples.

No entanto, a vantagem única do Sankey é mostrar o caminho completo dos fluxos individuais de votos através de múltiplos candidatos e, na minha opinião, também fica mais divertido :slight_smile:

Mas, para um Sankey, você teria que permitir uma das seguintes opções:

  • adicionar uma dependência extra, ou
  • construir um Sankey internamente (o que talvez não seja tão ruim agora que estamos na era dos agentes de código)

Acho que o gráfico de barras é um bom passo intermediário, caso você esteja preocupado com a complexidade de uma apresentação completa com Sankey.

De qualquer forma, você terá que modificar a API para qualquer uma das apresentações.