javascript - 如何在折线图中显示最新值

标签 javascript d3.js charts

我无法访问 CSV 的最后一个值(行)以将其悬停在折线图中显示。我需要将值显示为文本,但也需要用作 Y 坐标以与行尾对齐。 这就是我所拥有的。第一部分有效,但第二部分无效(在///之间):

function mouseover(d) {
d3.select(d.corporation.line).classed("corporation--hover", true);
d.corporation.line.parentNode.appendChild(d.corporation.line);
focus.attr("transform", "translate(" + x(d.date) + "," + y(d.value) + ")");
focus.select(".corpname").text(d.corporation.name);
focus.select(".ranking").text(d.value);
/////
focus.append("text")
.datum(function(d) { return {name: d.corporation.name, value: d.corporation.value[d.corporation.values.length - 1]}; })
.attr("transform", function(d) { return "translate(" + x(d.value.date) + "," + y(d.value.values) + ")"; })
.text(function(d) { return d.value; });
/////
}

我尝试了几种不同的变体,但没有成功。如果有人能登上顶峰,我会很高兴。

PLUNK在这里:http://plnkr.co/edit/1Nf992jYjSGyKhLhaij5?p=preview

谢谢!

最佳答案

以下是访问绑定(bind)到行元素的数据的方法:this.__data__

首先,让我们创建一个变量来访问您的数据,特别是值数组:

var that = this.__data__.corporation.values;

然后,我们可以获得日期和行尾的值:

var thatLength = that.length;
var thatValue = that[thatLength - 1].value;
var thatDate = that[thatLength - 1].date;

并显示文本:

someLegend
.attr("x", (x(yearFormat(thatDate))*-1)-90)
.attr("y", y(thatValue))
.text(thatValue);

这是骗子:http://plnkr.co/edit/4HquzuJ6FJeZvEVWuUS5?p=preview

PS:我创建了这个变量 someLegend,因为我没有时间理解 focustranslate 逻辑。

关于javascript - 如何在折线图中显示最新值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37009419/

相关文章:

javascript - 支持地理定位但不起作用

javascript - 如何知道应用了哪种 CSS 样式以及从何处应用 (javascript)?

c# - 从服务器删除上传的文件

d3.js - 如何在 nvd3.js multiBarChart 的轴上设置域和比例

excel - 错误 "Parameter not valid"创建包含两个系列的图表

javascript - Google Charts 中具有相同 x 轴的多个图形

简单 JavaScript 代码中的 JavaScript 错误

javascript - 在 d3.js 中如何创建用于投影的动态比例值?

javascript - d3.js 中的外部文件未定义 JSON 数据?

charts - Google Charts ArrowFormat 不显示任何箭头