Skip to content

#1471 — bar chart labels and majority marker use different denominators

Filed 2026-08-02: Equal-Vote/bettervoting#1471

This is R1 from ../analysis/flat-scores-abstention/04-options.md — filed as an independent presentation bug, with no reference to the abstention argument at all.

The finding

ResultsBarChart computes percentage labels over all bars (:52) and the majority marker over all bars except the last (:83-90). Both are individually defensible; together they aren't comparable, and the chart shows them side by side.

Worked from the executed nine-ballot case (3 prefer A, 2 prefer B, 4 equal):

Bar Value Label
A 3 33.3%
B 2 22.2%
Equal Support 4 44.4%

Marker at (3+2)/2 = 2.5 = 27.8% of the label axis, legended "majority threshold". Winner at 33%, threshold at 28%, biggest bar belongs to neither candidate. Every number individually correct.

Scope — corrected during filing

Initially scoped as "the STAR runoff chart". It is actually both charts that pass majorityLegend, behaving identically:

  • STAR runoff (STARResultSummaryWidget.tsx:87) — last bar is Equal Support
  • IRV final round (IRV/winner.tsx:49) — last bar is exhausted ballots

And the two majorityOffset-only call sites (STARResultSummaryWidget.tsx:73, IRV/winner.tsx:44) draw no marker at all: the line renders via <Line dataKey={majorityLegend}> (:175-176), so an undefined majorityLegend means no line. Those calls run the block purely for its colour-offset side effect — noted in the issue as worth a comment, since majorityOffset reads like "show the majority" and doesn't.

Why it's filed separately

The abstention fix would make the last bar much larger and so make this obvious — but the inconsistency exists today independently, and it's fixable today. Filing it on its own means it can't be blocked by, or entangled with, #884. The issue text never mentions abstentions.

Three fix options offered without picking one; PR offered.

Provenance

Claim How established
The two denominators read from source at 8d2b3f9
The 3 / 2 / 4 worked numbers executed — the tabulator output behind probe/
Percentages and marker position arithmetic applied to the component's own formulas
Affected call sites, and that majorityOffset alone draws no line read from source — grep of all four call sites plus the <Line> render
Rendered appearance not verified in a browser