Моя цель - создать новую диаграмму, выглядящую как sh, чтобы использовать ее в качестве альтернативы гистограммам с накоплением. Это похоже на диаграмму с областями, но нет привязки к оси x. Вместо этого каждая полоса расширяется или сужается, чтобы отразить увеличение или уменьшение ее относительной доли в общей сумме. Изображенный ниже:
Это немного сложно для меня, потому что я привык к диаграммам, имеющим ось y. Однако здесь нет оси y; ширина каждой полосы определяет пропорцию. Цвет обозначает тип. Мы можем игнорировать провалы и другие движения в пространстве y (можно просто выровнять по центру). Ось x - это просто время (месяцы).
Примеры данных:
var data = [
{'month':'Jan', 'thing1':76,'thing2':21,'thing3':168},
{'month':'Feb', 'thing1':62,'thing2':91,'thing3':159},
{'month':'Mar', 'thing1':98,'thing2':67,'thing3':455},
{'month':'Apr', 'thing1':324,'thing2':53,'thing3':130}
];
Кажется особенно сложным создать эти извилистые траектории так, чтобы они накладывались друг на друга. Я догадываюсь, что .curve()
понадобится.
var myBands = d3.area()
.x(function(d,i) { return xScale(d.month); })
.y0(???)
.y1(???})
.curve(d3.curveCardinal);
Учитывая, что нет встроенного решения для этого типа диаграмм, мне может потребоваться определить свой путь logi c вручную, но, как обозначено ???
, я не могу понять как развить y logi c (насколько толстая полоса).
Question
Как я могу наметить необходимую толщину y logi c / для area()
или другое path
решение, чтобы попытаться использовать вышеуказанный вдохновляющий визуал?