“排序选择”投票在饼图中无法正常工作

:information_source: 概述

使用饼图类型和排序选择投票会产生不正确的结果。每个选项都会获得一票,而不管用户实际如何对他们的选择进行排序。这种行为使图表具有误导性,并且与排序选择逻辑不兼容。

:walking_woman: 重现步骤

  1. 在编辑器中单击创建投票
  2. 打开高级选项(齿轮图标)。
  3. 填写投票字段(可选),但选择饼图而不是“条形图”作为图表类型。
  4. 滚动回顶部,然后选择排序选择作为投票类型。
  5. 保存并发布投票。

此时,投票将使用饼图类型,该类型并非设计用于排序选择投票。

:white_check_mark: 预期结果

系统应执行以下任一操作:

  • 选择“排序选择”时自动切换到条形图,或
  • 完全阻止用户为排序选择投票选择饼图

:x: 观察到的结果

投票使用饼图并计算每个选项一票,即使某个用户只排序了一项或几项选择。图表平等地显示所有选项,使结果毫无意义:

:books: 其他上下文

已应用临时解决方法:

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

在控制台中手动将投票的图表类型从 pie 更新为 bar 可以纠正问题并恢复准确的结果:

3 个赞

FYI 值得关注的边界情况 @merefield

1 个赞

这不是一个有效的边界情况。

目前核心代码出于设计选择,不支持排名选择(Ranked Choice)的图表展示。

排名选择本来就不应该用饼图来可视化。排名选择由多轮投票组成,而这是无法在单个饼图中表示的。

如果这里存在 bug,那很可能是有人在界面本应阻止的情况下仍然能够选择图表。是否有人修改了设置代码以允许这样做?话虽如此,你始终可以通过“黑客”手段修改初始 markdown 来在“向导”之后更改属性(这种做法并不推荐)。

我之前曾提供一个合适的图表方案,即桑基图(Sankey),当时它运行正常,但 Discourse 拒绝合并它,因为它增加了一个(尽管支持良好且流行的)依赖库。这也情有可原。

如果 CDCK 改变关于合并桑基图的态度,我愿意接受资助,将该功能更新到现代代码并准备一个 PR。

我的插件分支展示了排名选择的桑基图。它很可能已经过时,且由于缺乏资金维护,急需更新:

以下是桑基图相关的一些代表性更改:

请随意使用这些内容。

如果允许我自夸一下的话,它确实非常酷。

它绝对比饼图好多了!!:sweat_smile:

我建议将此话题移至 Contribute > Feature,功能请求如下:

  • 为排名选择添加合适的可视化图表。
1 个赞