我在用 Highcharts 做一个折线图,想在 tooltip 里同时显示日期和数值,但默认只显示数值。试过用 tooltip.formatter,但不知道怎么拿到原始数据里的日期字段。
我的数据是这种格式:
series: [{
data: [
{ x: Date.UTC(2023, 0, 1), y: 29.9 },
{ x: Date.UTC(2023, 0, 2), y: 71.5 }
]
}]
怎么在 tooltip 里把日期格式化成 “2023-01-01: 29.9” 这样的字符串?
tooltip.formatter函数来自定义内容。具体来说,Highcharts 的tooltip.formatter允许你返回一个字符串作为 tooltip 的内容,你可以在这个函数中访问图表的数据点信息,包括日期(x 轴值)和数值(y 轴值)。以下是解决这个问题的具体步骤:
1. 使用
tooltip.formatter: 首先,你需要设置tooltip.formatter为一个函数。这个函数会在每次 tooltip 显示时被调用,并且会传入一个包含当前数据点信息的对象。2. 获取数据点信息: 在
formatter函数内部,你可以通过this.x获取日期(因为你在数据中将日期设为x轴值),通过this.y获取数值。3. 格式化日期: 由于
x轴值是以毫秒为单位的时间戳(通过Date.UTC创建的),你需要将其转换为可读的日期格式。可以使用 JavaScript 的Date对象来进行格式化。4. 返回格式化的字符串: 最后,将格式化后的日期和数值拼接成你想要的字符串格式,并从
formatter函数中返回。下面是具体的代码实现:
在这段代码中,我们做了如下几件事:
- 定义了一个 Highcharts 图表,类型为折线图。
- 设置了
series.data,其中每个数据点都有x和y属性。- 在
tooltip.formatter函数中,我们创建了一个Date对象来处理x轴值,并使用toISOString()方法来格式化日期。这里我们只需要年月日部分,所以用了slice(0, 10)来截取。- 最后,将格式化后的日期和数值拼接成所需的字符串格式,并返回。
这样,当你将鼠标悬停在图表上的数据点时,tooltip 就会按照你指定的格式显示日期和数值了。希望这能帮到你!
pre class="pure-highlightjs line-numbers">
tooltip: {formatter: function() {
return Highcharts.dateFormat('%Y-%m-%d', this.x) + ': ' + this.y;
}
}