Как создать «график наклона» в d3.js

В The Visual Display of Quantitative Information Эдвард Тафте ввел термин «график наклона» для очень минимального типа диаграммы(подробнее). Авторитетный пример выглядит так:

Example of slope graph

Есть по крайней мере две реализации слоупграфа в d3.js in th wild:

У меня был шанс на более декларативную реализацию, а также сохранить 100% соответствие между значениями в обоих столбцах, но застрял. Как и ожидалось, когда в наборе данных появляются элементы с похожими или одинаковыми значениями, графики перекрываются, и диаграмма становится нечитаемой.

Наивная версия (источник)использует шкалу linearдля вычисления горизонтального положения, в то время как попытка «нормировать» положения(источник)использует ordinalмасштаб.

Я считаю, что лучших результатов можно добиться с порядковой шкалой, вычисляя смещение на основе координат перекрывающихся элементов. Следует ли вычислять смещение отдельно для обоих столбцов, следует ли его вычислять заранее на основе данных или «на лету» при установке атрибутов? Как можно расширить кодовую базу так, чтобы элементы с одинаковыми значениями располагались друг под другом, другие элементы корректировались соответствующим образом, а значения в обоих столбцах оставались в одном и том же горизонтальном положении?

8
задан ZachB 3 May 2012 в 19:37
поделиться