Я использую d3.stack()
, чтобы создать нормализованный сложный баркар.
Но у меня возникли проблемы с доступом к соответствующим значениям встроенного набора данных для всплывающей подсказки для мусора.D3v4 Stacked Barchart Tooltip
serie.selectAll("rect")
.data(function(d) { return d; })
.enter().append("rect")
...
.on("mousemove", function(d){
let coords = d3.mouse(svg.node());
tooltip.style("left", coords[0] + "px");
tooltip.style("top", coords[1] - 70 + "px");
tooltip.style("display", "inline-block");
tooltip.html("HOW TO ACCESS DATA HERE?");
});
d
является Array[2]
в этой точке со значениями, определяющими базовые/верха, d.data
полный исходный объект данных, но не хватает информации, над которой стопкой серии я в настоящее время зависания.
В идеале я хочу подсказку, чтобы показать для набора данных, как {name:"item1", foo:10, bar:20}
value: 10
percentage: 33%
при наведении курсора над foo
прямоугольнику.
Все примеры, которые я нашел, предназначены для D3v3, где вы можете просто использовать d.y
для доступа к соответствующему значению, но это, похоже, больше не работает с D3v4.
Первый аргумент ('d') в v4 точно такой же, как и в v3. Я предлагаю вам отправить сообщение [MCVE] (http://stackoverflow.com/help/mcve). –
Тогда мое предположение о том, что это было связано с версией, было неправильным, тем не менее остается вопрос: откуда я узнаю, по какой прямой из серии я паря? В соответствии с этим примером (http://bl.ocks.org/mstanaland/6100713) это должно быть просто 'dy', но вот сценарий, где он не работает, поскольку' d' является массивом стека: https: // jsfiddle.net/vu624zrg/1/ – TommyF