Highcharts Custom Funnel

时间:2016-04-27 21:36:41

标签: javascript angularjs highcharts highcharts-ng

我是Highcharts图书馆的新手,需要创建一个水平漏斗。有一个现有的渠道:http://www.highcharts.com/demo/funnel但没有选项让它成为横向。我一直在阅读有关如何扩展高级图表的文档,但我不知道如何做到这一点。是否可以使用Highcharts创建这个水平漏斗? enter image description here

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

它不是您发布的图片中的图表,但您可以从堆叠区域系列中获得倒金字塔/漏斗。

示例:http://jsfiddle.net/r9mtoec8/

$(function() {
  var rawData = [7, 14, 16, 5, 4],
    data = [
      [0, 100]
    ],
    overData = [
      [0, 0]
    ],
    underData = [
      [0, 0]
    ],
    zones = [],
    len = rawData.length,
    colors = Highcharts.getOptions().colors,
    maxColor = colors.length,
    i, val, sum = 0,
    pos = 0;

  for (i = 0; i < len; i++) {
    sum += rawData[i];
  }

  for (i = 0; i < len; i++) {
    pos += rawData[i];
    val = (sum - pos) / sum * 100;
    data.push([pos, val]);
    overData.push([pos, (100 - val) / 2]);
    underData.push([pos, (100 - val) / 2]);
    zones.push({
      value: pos,
      color: colors[i % maxColor]
    });
  }



  $('#container').highcharts({
    chart: {
      type: 'area'
    },
    yAxis: {
      title: {
        text: 'Percent'
      }
    },
    plotOptions: {
      area: {
        enableMouseTracking: false,
        showInLegend: false,
        stacking: 'percent',
        lineWidth: 0,
        marker: {
          enabled: false
        }
      }
    },
    series: [{
      name: 'over',
      color: 'none',
      data: overData
    }, {
      id: 's1',
      name: 'Series 1',
      data: data,
      showInLegend: true,
      zoneAxis: 'x',
      zones: zones
    }, {
      name: 'under',
      color: 'none',
      data: underData
    }]
  });
});

图片中的图表在Highcharts中是可行的,但您需要修改数据和图表的设置。虚线可以使用带有设置破折号样式的线条来完成。 示例:http://jsfiddle.net/r9mtoec8/22/