dax
(Daniela)
1
概要
円グラフタイプとランキング選択投票を併用すると、誤った結果が生成されます。ユーザーが実際に選択した順位に関係なく、各選択肢に1票が与えられます。この動作により、グラフは誤解を招き、ランキング選択のロジックと互換性がなくなります。
再現手順
- コンポーザーで投票を作成をクリックします。
- 詳細オプション(歯車アイコン)を開きます。
- 投票フィールドを入力します(任意)。ただし、グラフタイプは「棒グラフ」ではなく**「円グラフ」**を選択します。
- 上部に戻り、投票タイプとしてランキング選択を選択します。
- 投票を保存して公開します。
この時点で、投票は円グラフタイプを使用しますが、これはランキング選択投票に対応するように設計されていません。
期待される結果
システムは次のいずれかを行う必要があります。
- 「ランキング選択」が選択されたときに、自動的に棒グラフに切り替える。
- ランキング選択投票で円グラフを選択できないようにする。
観測された結果
投票は円グラフを使用し、ユーザーが1つまたは数個の選択肢しかランク付けしなかった場合でも、選択肢ごとに1票をカウントします。グラフはすべての選択肢を均等に表示するため、結果は無意味になります。
追加コンテキスト
一時的な回避策が適用されました。
poll = Poll.find_by(id: 123)
poll.chart_type = 'bar'
poll.save
コンソールで投票のグラフタイプを pie から bar に手動で更新すると、問題が解決し、正確な結果が復元されます。
「いいね!」 3
sam
(Sam Saffron)
2
FYI 興味深いエッジケースです @merefield
「いいね!」 1
これは有効なエッジケースではありません。
現在、コアにはRanked Choice(順位選択制)に対応したグラフ表示がサポートされていません。これは意図的な選択です。
Ranked Choiceを円グラフで可視化することを意図したものではありません。Ranked Choiceはラウンド制であり、これを単一の円グラフで表現することはできません。
もしバグがあるとしたら、おそらくインターフェースが選択を阻止すべき状況で、誰かがグラフを選択できてしまったことでしょう。設定コードを変更してそれを許可したのでしょうか?とは言え、あなたは常に「ウィザード」実行後に初期マークダウンを「ハック」して属性を変更することができました(推奨されません)。
以前、適切なグラフとしてサンキー図(Sankey diagram)を提案しましたが、動作はしていましたが、Discourseはそれをマージしませんでした。なぜなら、それは(広くサポートされ人気のある)依存ライブラリを追加することになるからです。納得できます。
もしCDCKがサンキー図の採用に関する立場を変更するなら、そのコードを最新のコードベースに更新し、PR(プルリクエスト)を準備するために資金を提供してくれる人がいれば喜んで対応します。
私のフォークしたプラグインでは、Ranked Choiceに対してサンキー図を表示しています。メンテナンス資金がないため、おそらくかなり古く、メンテナンスが必要なものとなっています:
サンキー図に関連する代表的な変更点は以下の通りです:
ご自由にお使いください。
私自身言うのも何ですが、かなりクールです。
間違いなく円グラフよりも良いです!!
これは Contribute > Feature に移動し、機能リクエストは以下の内容とするのが良いでしょう:
- Ranked Choiceに対する適切な可視化を追加する。
「いいね!」 1
riking
(Kane York)
4
この3色の棒グラフは、RCV(順位投票)の世論調査をどう可視化すべきかという私の提案です:
1回投票、それ以外の各ラウンドで移転された票、最終ラウンドで移転された票。
「いいね!」 2
はい、セグメント付きバーチャートは、移転元の情報やラウンドごとの増分を保持できるため、おそらくSankey図の有用な情報の大部分を、はるかにシンプルなUIで表現できるでしょう。
ただし、Sankey図の独自の利点は、個々の票の流れが複数の候補者を経由する完全なパスを示せる点であり、個人的には見た目ももっと楽しいと思います :)。
ただし、Sankey図を使用するには、以下のいずれかに対応する必要があります。
- 追加の依存関係(ライブラリ)を追加する、または
- 社内でSankey図を自作する(コーディングエージェントの時代になった今、そう悪くないかもしれません)
完全なSankey図の表現の複雑さを懸念している場合、棒グラフは良い中間ステップだと思います。
いずれにせよ、どちらの表現方法でもAPIを変更する必要があります。