【发布时间】:2017-12-01 09:27:31
【问题描述】:
我有一个 d3 堆叠区域可视化,它由一个主图表(国家)和从中绘制的小倍数(即州图表)组成。 Here's the Plunker for the viz I'm working on.
工具提示当前显示所选路径的 x 和 y 值。我想要实现的是:仅对于状态图,我希望工具提示显示未选定路径的值以及选定路径的值。
我已经在我正在处理的早期版本的可视化中部分地实现了这一点。这是the Plunker from which I'm trying to adapt the tooltip。非常相似。
这是我几天来一直在努力集成到现有工具提示中的代码:
paths.on('mousemove', function(d, i) {
let mousePos = d3.mouse(this);
d3.select(this).classed('hover', true);
MouseOverChart(d, dataset, mousePos, xScale);
function MouseOverChart(d, dataset, mousePos, xScale) {
var xPosition = (d3.event.pageX),
yPosition = (d3.event.pageY - 28);
let mouseX = mousePos[0];
var invertedX = xScale.invert(mouseX),
bisect = d3.bisector(function(d) { return new Date(d.x); }).left,
idx = bisect(d.values, invertedX);
var content = getTooltipHeader(d,idx);
content += '<ul class="record-list" >'
for (var i = 0; i < dataset.length; i++) {
content += getRecordContent(dataset[i], idx);
}
content += '</ul>';
showTooltip(content, xPosition, yPosition);
}
function showTooltip(content) {
d3.select(".tooltip")
.html(content);
d3.select(".tooltip");//.classed("none", false);
}
function getRecordContent(obj, pos) {
return '<li><span class="record-label">' + obj.record + '</span><span class="record-value">' + obj.values[pos].value + '</span></li>'
}
function getTooltipHeader(data, pos) {
var html = '<div class="tooltip-label"><span>' + data.values[pos].x +'</span><h3>' + data.record + '</h3></div>';
return html;
}
问题:
- 我无法让未选择的值显示在我现有的工具提示中,甚至无法显示为单独的工具提示。
- 将鼠标悬停在状态图表上时,当前配置会显示两次选定的值 - 一次在工具提示标题中,另一次在
<record-list>中。我已经测试了各种filter条件来禁止在<record-list>中显示值及其标签(如果它已经出现在<tooltip-header>中),但我没有成功。
- 将鼠标悬停在状态图表上时,当前配置会显示两次选定的值 - 一次在工具提示标题中,另一次在
Here, again, is the Plunker for the viz I'm working on。 And here's the Plunker from which I'm adapting the tooltip
提前感谢您提供的任何帮助。
编辑,2017 年 11 月 29 日:
我已经取得了一点进步;将鼠标悬停在 2009 年 1 月 29 日和 2009 年 3 月 1 日的日期上时,工具提示不会出现(尽管没有任何值),但不会出现在任何其他日期:
我正在继续努力,但我肯定被困住了,仍然希望得到任何帮助。
【问题讨论】:
标签: javascript jquery d3.js