2012-11-08 69 views
3

Highcharts,你可以更改鑽取的圖表類型嗎?Highcharts,你可以改變圖表類型進行鑽取?

我想首先提出一個標準的「列」圖表,然後鑽到一個「酒吧」圖表,我已經試過各種我以爲它會在設置我能想到的....

深入代碼,但似乎沒有這樣工作。 作爲...

drilldown: { 
    type: 'pie', 
    name: 'Chart1', 
    categories ['1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24','25','26','27','28'], 
    data: [1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8], 
    color: colors[0] 
} 

回答

7

我不知道你有沒有嘗試過,但你可以做到這一點。
看看我的example

$(function() { 
    var chart; 
    $(document).ready(function() { 

     var colors = Highcharts.getOptions().colors, 
      categories = ['MSIE', 'Firefox', 'Chrome', 'Safari', 'Opera'], 
      name = 'Browser brands', 
      data = [{ 
        y: 55.11, 
        color: colors[0], 
        drilldown: { 
         name: 'MSIE versions', 
         categories: ['MSIE 6.0', 'MSIE 7.0', 'MSIE 8.0', 'MSIE 9.0'], 
         data: [10.85, 7.35, 33.06, 2.81], 
         color: colors[0] 
        } 
       }, { 
        y: 21.63, 
        color: colors[1], 
        drilldown: { 
         name: 'Firefox versions', 
         categories: ['Firefox 2.0', 'Firefox 3.0', 'Firefox 3.5', 'Firefox 3.6', 'Firefox 4.0'], 
         data: [0.20, 0.83, 1.58, 13.12, 5.43], 
         color: colors[1] 
        } 
       }, { 
        y: 11.94, 
        color: colors[2], 
        drilldown: { 
         name: 'Chrome versions', 
         categories: ['Chrome 5.0', 'Chrome 6.0', 'Chrome 7.0', 'Chrome 8.0', 'Chrome 9.0', 
          'Chrome 10.0', 'Chrome 11.0', 'Chrome 12.0'], 
         data: [0.12, 0.19, 0.12, 0.36, 0.32, 9.91, 0.50, 0.22], 
         color: colors[2] 
        } 
       }, { 
        y: 7.15, 
        color: colors[3], 
        drilldown: { 
         name: 'Safari versions', 
         categories: ['Safari 5.0', 'Safari 4.0', 'Safari Win 5.0', 'Safari 4.1', 'Safari/Maxthon', 
          'Safari 3.1', 'Safari 4.1'], 
         data: [4.55, 1.42, 0.23, 0.21, 0.20, 0.19, 0.14], 
         color: colors[3] 
        } 
       }, { 
        y: 2.14, 
        color: colors[4], 
        drilldown: { 
         name: 'Opera versions', 
         categories: ['Opera 9.x', 'Opera 10.x', 'Opera 11.x'], 
         data: [ 0.12, 0.37, 1.65], 
         color: colors[4] 
        } 
       }]; 

     function setChart(options) { 
      chart.series[0].remove(false); 
      chart.addSeries({ 
       type: options.type, 
       name: options.name, 
       data: options.data, 
       color: options.color || 'white' 
      }, false); 
      chart.xAxis[0].setCategories(options.categories, false); 
      chart.redraw(); 
     } 

     chart = new Highcharts.Chart({ 
      chart: { 
       renderTo: 'container' 
      }, 
      title: { 
       text: 'Browser market share, April, 2011' 
      }, 
      subtitle: { 
       text: 'Click the columns to view versions. Click again to view brands.' 
      }, 
      xAxis: { 
       categories: categories 
      }, 
      yAxis: { 
       title: { 
        text: 'Total percent market share' 
       } 
      }, 
      plotOptions: { 
       series: { 
        cursor: 'pointer', 
        point: { 
         events: { 
          click: function() { 
           var drilldown = this.drilldown; 
           var options; 
           if (drilldown) { // drill down 
            options = { 
             'name': drilldown.name, 
             'categories': drilldown.categories, 
             'data': drilldown.data, 
             'color': drilldown.color, 
             'type': 'pie' 
            }; 
           } else { // restore 
            options = { 
             'name': name, 
             'categories': categories, 
             'data': data, 
             'type': 'column' 
            }; 
           } 
           setChart(options); 
          } 
         } 
        }, 
        dataLabels: { 
         enabled: true, 
         color: colors[0], 
         style: { 
          fontWeight: 'bold' 
         }, 
         formatter: function() { 
          return this.y +'%'; 
         } 
        } 
       } 
      }, 
      tooltip: { 
       formatter: function() { 
        var point = this.point, 
         s = this.x +':<b>'+ this.y +'% market share</b><br/>'; 
        if (point.drilldown) { 
         s += 'Click to view '+ point.category +' versions'; 
        } else { 
         s += 'Click to return to browser brands'; 
        } 
        return s; 
       } 
      }, 
      series: [{ 
       type: 'column', 
       name: name, 
       data: data, 
       color: 'white' 
      }], 
      exporting: { 
       enabled: false 
      } 
     }); 
    }); 

}); 

確保您不必爲您的所有系列定義的typeReference

+0

感謝皮特,這就是工作的偉大 – CityCollegeSouthampton

+1

@CityCollegeSouthampton皮特? –

+0

感謝那個例子。如果我將第一個圖表更改爲'bar'而不是'column',則當我切換到深入分析時出現錯誤:「TypeError:series.yAxis未定義」 任何想法? –

0

檢查:

文檔

http://api.highcharts.com/highcharts#series

原來的例子

http://www.highcharts.com/demo/column-drilldown

嘗試這個例子:

$(function() { 
// Create the chart 
$('#container').highcharts({ 
    chart: { 
     type: 'column' 
    }, 
    title: { 
     text: 'Browser market shares. January, 2015 to May, 2015' 
    }, 
    subtitle: { 
     text: 'Click the columns to view versions. Source: <a href="http://netmarketshare.com">netmarketshare.com</a>.' 
    }, 
    xAxis: { 
     type: 'category' 
    }, 
    yAxis: { 
     title: { 
      text: 'Total percent market share' 
     } 

    }, 
    legend: { 
     enabled: false 
    }, 
    plotOptions: { 
     series: { 
      borderWidth: 0, 
      dataLabels: { 
       enabled: true, 
       format: '{point.y:.1f}%' 
      } 
     } 
    }, 

    tooltip: { 
     headerFormat: '<span style="font-size:11px">{series.name}</span><br>', 
     pointFormat: '<span style="color:{point.color}">{point.name}</span>: <b>{point.y:.2f}%</b> of total<br/>' 
    }, 

    series: [{ 
     name: 'Brands', 
     colorByPoint: true, 
     data: [{ 
      name: 'Microsoft Internet Explorer', 
      y: 56.33, 
      drilldown: 'Microsoft Internet Explorer' 
     }, { 
      name: 'Chrome', 
      y: 24.03, 
      drilldown: 'Chrome' 
     }, { 
      name: 'Firefox', 
      y: 10.38, 
      drilldown: 'Firefox' 
     }, { 
      name: 'Safari', 
      y: 4.77, 
      drilldown: 'Safari' 
     }, { 
      name: 'Opera', 
      y: 0.91, 
      drilldown: 'Opera' 
     }, { 
      name: 'Proprietary or Undetectable', 
      y: 0.2, 
      drilldown: null 
     }] 
    }], 
    drilldown: { 
     series: [{ 
      type: 'line', 
      name: 'Microsoft Internet Explorer', 
      id: 'Microsoft Internet Explorer', 
      data: [ 
       [ 
        'v11.0', 
        24.13 
       ], 
       [ 
        'v8.0', 
        17.2 
       ], 
       [ 
        'v9.0', 
        8.11 
       ], 
       [ 
        'v10.0', 
        5.33 
       ], 
       [ 
        'v6.0', 
        1.06 
       ], 
       [ 
        'v7.0', 
        0.5 
       ] 
      ] 
     }, { 
      type: 'line', 
      name: 'Chrome', 
      id: 'Chrome', 
      data: [ 
       [ 
        'v40.0', 
        5 
       ], 
       [ 
        'v41.0', 
        4.32 
       ], 
       [ 
        'v42.0', 
        3.68 
       ], 
       [ 
        'v39.0', 
        2.96 
       ], 
       [ 
        'v36.0', 
        2.53 
       ], 
       [ 
        'v43.0', 
        1.45 
       ], 
       [ 
        'v31.0', 
        1.24 
       ], 
       [ 
        'v35.0', 
        0.85 
       ], 
       [ 
        'v38.0', 
        0.6 
       ], 
       [ 
        'v32.0', 
        0.55 
       ], 
       [ 
        'v37.0', 
        0.38 
       ], 
       [ 
        'v33.0', 
        0.19 
       ], 
       [ 
        'v34.0', 
        0.14 
       ], 
       [ 
        'v30.0', 
        0.14 
       ] 
      ] 
     }, { 
      type: 'line', 
      name: 'Firefox', 
      id: 'Firefox', 
      data: [ 
       [ 
        'v35', 
        2.76 
       ], 
       [ 
        'v36', 
        2.32 
       ], 
       [ 
        'v37', 
        2.31 
       ], 
       [ 
        'v34', 
        1.27 
       ], 
       [ 
        'v38', 
        1.02 
       ], 
       [ 
        'v31', 
        0.33 
       ], 
       [ 
        'v33', 
        0.22 
       ], 
       [ 
        'v32', 
        0.15 
       ] 
      ] 
     }, { 
      type: 'line', 
      name: 'Safari', 
      id: 'Safari', 
      data: [ 
       [ 
        'v8.0', 
        2.56 
       ], 
       [ 
        'v7.1', 
        0.77 
       ], 
       [ 
        'v5.1', 
        0.42 
       ], 
       [ 
        'v5.0', 
        0.3 
       ], 
       [ 
        'v6.1', 
        0.29 
       ], 
       [ 
        'v7.0', 
        0.26 
       ], 
       [ 
        'v6.2', 
        0.17 
       ] 
      ] 
     }, { 
      type: 'line', 
      name: 'Opera', 
      id: 'Opera', 
      data: [ 
       [ 
        'v12.x', 
        0.34 
       ], 
       [ 
        'v28', 
        0.24 
       ], 
       [ 
        'v27', 
        0.17 
       ], 
       [ 
        'v29', 
        0.16 
       ] 
      ] 
     }] 
    } 
}); 

});

1

嗯,我認爲這是足夠多的,如果你定義每個系列的類型

$(function() { 
// Create the chart 
Highcharts.chart('container', { 
    title: { 
     text: 'Browser market shares. January, 2015 to May, 2015' 
    }, 
    subtitle: { 
     text: 'Click the columns to view versions. Source: <a href="http://netmarketshare.com">netmarketshare.com</a>.' 
    }, 
    xAxis: { 
     type: 'category' 
    }, 
    yAxis: { 
     title: { 
      text: 'Total percent market share' 
     } 

    }, 
    legend: { 
     enabled: false 
    }, 
    plotOptions: { 
     series: { 
      borderWidth: 0, 
      dataLabels: { 
       enabled: true, 
       format: '{point.y:.1f}%' 
      } 
     } 
    }, 

    tooltip: { 
     headerFormat: '<span style="font-size:11px">{series.name}</span><br>', 
     pointFormat: '<span style="color:{point.color}">{point.name}</span>: <b>{point.y:.2f}%</b> of total<br/>' 
    }, 

    series: [{ 
     name: 'Brands', 
     type: 'column', 
     colorByPoint: true, 
     data: [{ 
      name: 'Microsoft Internet Explorer', 
      y: 56.33, 
      drilldown: 'Microsoft Internet Explorer' 
     }, { 
      name: 'Chrome', 
      y: 24.03, 
      drilldown: 'Chrome' 
     }, { 
      name: 'Firefox', 
      y: 10.38, 
      drilldown: 'Firefox' 
     }, { 
      name: 'Safari', 
      y: 4.77, 
      drilldown: 'Safari' 
     }, { 
      name: 'Opera', 
      y: 0.91, 
      drilldown: 'Opera' 
     }, { 
      name: 'Proprietary or Undetectable', 
      y: 0.2, 
      drilldown: null 
     }] 
    }], 
    drilldown: { 
     series: [{ 
      type: 'line', 
       name: 'Microsoft Internet Explorer', 
      id: 'Microsoft Internet Explorer', 
      data: //your drill data 
     }, { 
      name: 'Chrome', 
      id: 'Chrome', 
      data: //your drill data 
     }, { 
      name: 'Firefox', 
      id: 'Firefox', 
      data: //your drill data 
     }, { 
      name: 'Safari', 
      id: 'Safari', 
      data: //your drill data 
     }, { 
      name: 'Opera', 
      id: 'Opera', 
      data: //your drill data 
     }] 
    } 
}); 

http://jsfiddle.net/ffc4jhb7/

問候