高图表仅在某些点上有数据标签

Ava*_*lon 2 highcharts

我用来highcharts显示机器日志数据。数据通过 PHP 格式化/创建。页面上有一个开关,让用户可以选择让 X 轴显示值发生的时间,或者只是一个计数器。

对于一个系列,该值大部分为零,但有时也不是。我想在值不为零且仅在本系列中时显示标签。对于x-axis != time我正在使用的选项:

[0,0,0,{y:125.71,dataLabels: {enabled: true}},0,0]
Run Code Online (Sandbox Code Playgroud)

打开每个点的标签,就可以了。

当我切换到在 X 轴上显示时间时,我需要像这样格式化数据:

[Date.UTC(2016, 6, 1, 09, 06), 0],[Date.UTC(2016, 6, 1, 09, 06), 0, [Date.UTC(2016, 6, 1, 09, 06), 216],[Date.UTC(2016, 6, 1, 09, 06), 0],[Date.UTC(2016, 6, 1, 09, 06), 0],[Date.UTC(2016, 6, 1, 09, 06), 0]
Run Code Online (Sandbox Code Playgroud)

我不知道如何在这里显示标签。这种数据格式也可以吗?

另外,如果还有其他方法可以做到这一点:

if (value>0) {show label}
Run Code Online (Sandbox Code Playgroud)

jlb*_*ggs 5

本质上是同一件事 - 您可以将数据点作为单个y值、值数组x,y或成对对象发送key: value,并且可以像第一个示例中那样混合和匹配。

因此,这个数据数组将每个数据点作为 x,y 值数组发送,只需要作为对象发送的数组之一。这:

[
  [Date.UTC(2016, 6, 1, 09, 06), 0],
  [Date.UTC(2016, 6, 1, 09, 06), 216],
  [Date.UTC(2016, 6, 1, 09, 06), 0]
]
Run Code Online (Sandbox Code Playgroud)

变成:

[
  [Date.UTC(2016, 6, 1, 09, 06), 0],
  {x: Date.UTC(2016, 6, 1, 09, 06), y: 216, dataLabels: { enabled: true }},
  [Date.UTC(2016, 6, 1, 09, 06), 0]
]
Run Code Online (Sandbox Code Playgroud)

就像您对非日期时间版本所做的那样。

唯一的区别是您指定'x':以及'y':

[[编辑

至于问题的第二部分,您也可以使用格式化程序来完成此操作:

dataLabels: {
  formatter: function() {
    return this.y > 0 ? this.y : '';
  }
}
Run Code Online (Sandbox Code Playgroud)