我有兴趣更改点击事件的图例布局,如下所示

第一次单击水平-底部

第二次单击水平顶部

第三次单击病毒左

第四单击病毒右键

这是Link to FIDDLE

我不知道该怎么做,这是我到目前为止所尝试的。

的HTML

      <script src="http://code.highcharts.com/highcharts.js"></script>
      <div id="container" style="height: 400px"></div>
      <input id='legend' type='button' value='toggle legend'>


JAVASCRIPT

       $(function () {
var chart = new Highcharts.Chart({
    chart: {
        renderTo: 'container',
        zoomType: 'xy',
        marginLeft: 50,
        marginBottom: 90
    },

    yAxis: {
        reversed: true,
        //min: 0,
        //max: 50
    },
    plotOptions: {
        series: {
            stacking: 'normal'
        }
    },
    xAxis: {
        opposite: true
    },
    series: [{
        name: '01-Jan-2014',
        data: [
            [28, 10],
            [30, 0]
        ]
    }]
});


var last = 0;
$('#legend').click(function(){

     var arr  = ['vertical','horizontal'];
     if(last>arr.length){last=0;}
    setTimeout(function() { alert(arr[last++]);},10);
     chart.series[0].update({ legend: { layout: arr[last] }});

    });

    });

最佳答案

这是一种实现方法here。我讨厌诉诸于设置内部的dirty标志,但它似乎运行良好:

var somePositions = [['center','bottom'],
                     ['center','top'],
                     ['left','middle'],
                     ['right','middle']];

 $('#btn').click(function(){
      posIdx++;
      if (posIdx == 4) posIdx = 0;
      chart.legend.options.align = somePositions[posIdx][0];
      chart.legend.options.verticalAlign = somePositions[posIdx][1];
      chart.isDirtyLegend = true;
      chart.isDirtyBox = true;
      chart.redraw();
 });

关于javascript - 如何在Highchart中切换图例布局,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22854182/

10-09 23:36