【发布时间】:2020-08-02 19:50:21
【问题描述】:
我在 d3.js 中有一个折线图。
X 轴有日期,定义如下:
g.append("g")
.attr("transform", "translate(0," + height + ")")
.call(d3.axisBottom(x).tickFormat(d3.timeFormat("%b/%d/%Y")).ticks(d3.timeYear))
.selectAll("text")
.style("text-anchor", "end")
.attr("dy", ".25em")
.attr("transform", "rotate(-45)");
我想在每个日期旁边显示更多信息。具体来说,是基于该日期的行值的计算。为简单起见,假设我只想显示该点的线值,乘以 3。因此,如果在 2020 年 4 月 19 日,线的值为 150,则 X 轴应为:
04/19/2020
450
如果我尝试使用轴转换将文本直接插入轴标签,我会收到错误消息,可能是因为它不再是有效的日期/时间格式。所以我认为我必须将文本添加为一个单独的元素,但我不明白如何迭代图表上的每个点并计算要显示的正确文本。对于每种情况,计算正确的 Y 位置应该很容易(y 是图形的全高加上一些固定的偏移量),所以问题是迭代并为每个点设置正确的 X 和值。
【问题讨论】:
-
想要从实际日期的值进行插值以匹配轴刻度是不寻常的,而且我认为这不是一个好的做法 - 因为你正在混合我应该在哪里寻找信息类型 - 通过包括在 x 轴上插值 y 值。另一种选择可能是使用三角测量计算 x 刻度线处的 y 值,并将“伪”数据点引入数据集/第二个数据系列,并绘制它们(可能对它们进行不同的着色以表明它们是计算值)
-
嗨,乔万。我为您添加了另外两种在每个 x 轴日期下方添加自定义文本的方法。我希望它能回答你的问题。
标签: javascript d3.js