[编辑]我在写这个问题时最终解决了这个问题,因此请参阅下面的答案。



我有一个图表,在x轴上有时间段,在y轴上有得分,并且在每个点上,我都希望工具提示给出当前点和上一个点之间的y值差(在同一系列)。

可重现的示例:

library(highcharter)

hchart(df,
       type="line",
       hcaes(x = period, y = value, group = group)
  ) %>%
  hc_tooltip(pointFormat = "Score: {point.y} ({previous.point.y})")


理想情况下,例如,将鼠标悬停在系列B的第二点上时,我想说Score: 5 (+1)。这可能需要一些formatter=JS() JavaScript而不只是pointFormat,但不确定如何做到这一点。

最佳答案

感谢this related answer,我设法访问了所有y值,然后我发现使用this.point.x允许我们磨练特定的y值。这是JS:

function () {
  if (this.point.x == 0) {  // there's no previous point, so set to '0'
    var thisDiff = 0;
  } else {  // use 'this.point.x' to get current position, and do '-1' to get previous position
    var thisDiff = ( this.series.points[this.point.x].y - this.series.points[this.point.x - 1].y );
    if (thisDiff > 0) {
      thisDiff = '+' + thisDiff;  // pretty print a '+' sign if difference is positive
    }
  }
  var s = '<b>Series ' + this.series.name + ', period ' + this.point.name + ': </b>';
  s += 'mean score ' + this.point.y + ' (' + thisDiff + ')';
  return(s);
}


要使其在highcharteR中工作,我们只需要将其用引号引起来并传递给hc_tooltip(formatter = JS()

关于javascript - Highcharts/HighcharteR工具提示:访问序列中的所有y值,打印差异,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/61141757/

10-16 00:08