如何从Highcharts中的xAxis点击事件中绘制垂直线?

时间:2017-11-25 19:01:15

标签: javascript highcharts

我有以下代码:

Check the JS Fiddle Here

var chart = Highcharts.chart('container', {

        xAxis: {
            categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
            plotLines: [{
              value: 1,
              color: 'red',
              width: 2,
              zIndex: 10
            }]
        },

        series: [{
            data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4]
        }]
    });


    // the button action
    var $button = $('#button');

    $button.click(function () {
    console.log(chart.xAxis);
            var newValue = (chart.xAxis[0].options.plotLines[0].value + 1) % 12;
        chart.xAxis[0].options.plotLines[0].value = newValue;
        chart.xAxis[0].update();
    });

我想要做的是绘制一条垂直线,直到我点击的xAxis。

因此,例如,如果我点击1月他会画一条垂直线直到1月,但是如果我点击11月他会删除1月的线并且在11月之前画一条新线。

请帮助我。

谢谢=)

1 个答案:

答案 0 :(得分:1)

我正在使用chart events click功能来跟踪点击并相应地添加plotLine。因此,在图表中单击相应的月份区域,然后绘制绘图线并擦除。



var chart = Highcharts.chart('container', {
  chart: {
    events: {
      click: function(e) {
        //console.log(e.xAxis[0].axis.categories[Math.round(e.xAxis[0].value)])
        chart.xAxis[0].options.plotLines[0].value = Math.round(e.xAxis[0].value);
        chart.xAxis[0].update();
      }
    }
  },

  xAxis: {
    categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
    plotLines: [{
      value: 1,
      color: 'red',
      width: 2,
      zIndex: 10
    }]
  },

  series: [{
    data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4]
  }]
});


// the button action
var $button = $('#button');

$button.click(function() {
  console.log(chart.xAxis);
  var newValue = (chart.xAxis[0].options.plotLines[0].value + 1) % 12;
  chart.xAxis[0].options.plotLines[0].value = newValue;
  chart.xAxis[0].update();
});

<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
<script src="https://code.highcharts.com/highcharts.js"></script>

<div id="container" style="height: 400px"></div>
<button id="button" class="autocompare">update plot line</button>
&#13;
&#13;
&#13;