在highcharts中的流多线中添加特定值的标记

时间:2016-09-22 05:14:37

标签: javascript highcharts marker linechart spline

这里我正在使用基于示例jsfiddle的实时流数据处理Highcharts时间序列图表。在fiddle中显示了4行,分别命名为input1,input2,input3和&输入4并使用实时随机数据更新,但在我的实际项目中,输入值通过MQTT更新。在这里,我使用series [i] .addPoint()方法向图表添加点。如果值超过特定限制,我想添加一些标记或符号以及行。

$(function() {
  $(document).ready(function() {
    Highcharts.setOptions({
      global: {
        useUTC: false
      }
    });

    $('#container').highcharts({
      chart: {
        type: 'spline',
        animation: Highcharts.svg, // don't animate in old IE
        marginRight: 10,
        events: {
          load: function() {

            // set up the updating of the chart each second
            var series = this.series;
            var length = series.length;
            setInterval(function() {

              var x = (new Date()).getTime(), // current time
                a0 = Math.random();
              a1 = Math.random();
              a2 = Math.random();
              series[0].addPoint([x, Math.random()], true, true);
              for (var i = 1; i < length; i++) {
                series[i].addPoint([x, Math.random()], false, true);
              }
            }, 1000);
          }
        }
      },
      title: {
        text: 'Live random data'
      },
      legend: {
        enabled: true
    },
      xAxis: {
        type: 'datetime',
        tickPixelInterval: 150
      },
      yAxis: {
        title: {
          text: 'Value'
        },
        plotLines: [{
          value: 0,
          width: 1,
          color: '#808080'
        }]
      },
      tooltip: {
        formatter: function() {
          return '<b>' + this.series.name + '</b><br/>' +
            Highcharts.dateFormat('%Y-%m-%d %H:%M:%S', this.x) + '<br/>' +
            Highcharts.numberFormat(this.y, 2);
        }
      },
      exporting: {
        enabled: false
      },
      series: [{
        name: 'input1',
        data: (function() {
          // generate an array of random data
          var data = [],
            time = (new Date()).getTime(),
            i;

          for (i = -19; i <= 0; i += 1) {
            data.push({
              x: time + i * 1000,
              y: Math.random()
            });
          }
          return data;
        }())
      }, {
        name: 'input2',
        data: (function() {
          // generate an array of random data
          var data = [],
            time = (new Date()).getTime(),
            i;

          for (i = -19; i <= 0; i += 1) {
            data.push({
              x: time + i * 1000,
              y: Math.random()
            });
          }
          return data;
        }())
      }, {
        name: 'input3',
        data: (function() {
          // generate an array of random data
          var data = [],
            time = (new Date()).getTime(),
            i;

          for (i = -19; i <= 0; i += 1) {
            data.push({
              x: time + i * 1000,
              y: Math.random()
            });
          }
          return data;
        }())
      }, {
        name: 'input4',
        data: (function() {
          // generate an array of random data
          var data = [],
            time = (new Date()).getTime(),
            i;

          for (i = -19; i <= 0; i += 1) {
            data.push({
              x: time + i * 1000,
              y: Math.random()
            });
          }
          return data;
        }())
      }]
    });
      });
     });

1 个答案:

答案 0 :(得分:0)

使用setState()方法并使用工具提示。然后,您可以使用工具提示的API设置工具提示或包围焦点的圆的样式,并根据带有条件语句的图表上的值更改样式或工具提示符号/ html。 请参阅此答案:Highcharts - manually trigger hover event on a point