Files
jinhojang6 df278cde49 feat(web): draw the search-shift chart as a diverging bar chart
The chart's bars did not match its numbers. The three rows were drawn as left-aligned fills on separate scales: +48% took 88.6% of its track and +23% took 56.2%, so a figure twice as large rendered only 1.6 times as long. The -51% row encoded nothing at all — a full-width hatch, whose length said 100%.

All three rows now share one axis with zero in the middle. The side a bar falls on carries the sign, its length carries the size, and the three are finally comparable: +48% renders 2.09x the +23% bar, matching the figures. It also puts the section's argument in the shape of the chart — one bar leaving, two arriving.

The axis runs to 60% each way rather than to the largest value, so the -51% bar stops short of the edge instead of filling it; a bar that runs out of track reads as clipped rather than as its own value. The bound lifts automatically if the data ever outgrows it.

Texts, legends, arrows and the palette are unchanged, except that the grey rail is dimmed: at full strength the half sitting on the empty side of zero read as a bar running the other way, which is the one thing a diverging chart must not do. The zero line carries the weight instead.

Each row is now a single signed number — `change: -51` — with the printed value, the arrow and the bar length all derived from it, so the number and the bar cannot drift apart. A test pins bar widths to the figures they carry.
2026-08-27 23:37:50 +09:00
..
2026-05-18 15:30:43 +09:00