2017-06-02 115 views
0

现在我有使用下面的代码Highcharts一个简单的柱形图:如何合并两个Highcharts图表类型?

$(document).ready(function() { 
      var options = { 
       chart: { 
        renderTo: 'container', 
        type: 'column' 
       }, 
       title: { 
        //some code 
       }, 
       xAxis: { 
        categories: [] 
       }, 
       yAxis: { 
        //some code       
       }, 

       plotOptions: { 
        series: { 
         borderWidth: 0, 
         dataLabels: { 
          enabled: true, 
          format: '{point.y}' 
         } 
        } 
       }, 
       legend: { 
        //some code 
       }, 
       series: [] 
      }; 

      $.getJSON("data/column.php", function(json) { 
       options.xAxis.categories = json[0]['data']; 
       options.series[0] = json[1]; 
       chart = new Highcharts.Chart(options); 
      }); 
     }); 

我现在想要一个折线图添加到同一容器中,使用完全相同的选项(尽管图表类型)。日期也通过JSON提供。

我该如何做到这一点?

我到目前为止做了什么: 我创建了第二个变量“options2”与值图表和系列。 然后我打电话

$.getJSON("data/line.php", function(json) { 
       options.xAxis.categories = json[0]['data']; 
       options2.series[1] = json[1]; 
       chart = new Highcharts.Chart(options2); 
      }); 

但只显示第一列图表。

回答

0

通过使一系列选项直接通过JSON(图表类型)解决它。 我在数据数组中添加了“type:line”,然后覆盖脚本标签中以前设置的选项。

0

可能您应该尝试使用$ .merge来防止对象版本。

尝试此

 $.getJSON("data/column.php", function(json) { 
      // Merge objects 
      var newOptions = $.extend({}, options); 

      // Edit new object instead of old 
      newOptions.xAxis.categories = json[0]['data']; 
      newOptions.series[0] = json[1]; 

      chart = new Highcharts.Chart(newOptions); 
     }); 
+0

不幸的是,这不起作用(没有在控制台日志中显示错误)。 可能我错过了一个关键部分:我有一个名为'options2'的变量,它声明了图表(renderTo和type)和系列。 但是你的变量不会合并两个变量'options'和'options2',是吗? – Andreas

+0

是的,它没有。对于合并选项,请使用:$ .extend({},options,options2); –

+0

这不起作用。使用此代码,图表类型会在列之间交替(刷新页面时)。 我想这是该系列的一个问题。根据Highcharts文档,第二个(依此类推)图表类型必须在系列数组中设置。 – Andreas