为网站创建100%堆积区域图

时间:2013-06-26 23:03:51

标签: charts highcharts google-visualization data-visualization stacked-area-chart

我正在尝试在我的网站上添加一张图表,显示如何在两方之间分配收入。它基本上是excel中的100%堆叠图,看起来像:

https://www.evernote.com/shard/s68/sh/35672a21-7821-4583-ae96-4d6506cfd88e/6a07965adf339136f886d8735b49fda1

有没有好的(理想上便宜,因为我发现的唯一一个可能做到的就是Highcharts,它看起来很棒,但它对我们正在做的不便宜)我们可以嵌入到我们网站的工具?理想情况下,如果用户可以选择一定价格并且它会显示两者的低于百分比,那将是很好的,但这只是一件好事。有什么建议?我查看了谷歌图表,但没有找到能够以这种格式显示数据的图表。

2 个答案:

答案 0 :(得分:3)

您可以使用Google Charts执行此操作。

假设你有一堆不一定匹配相同比例的数字,你可以创建一个简单的函数来比较每一行数字,并根据它们之间的比例进行调整:

function drawVisualization() {
  // add data in number form
  var data = google.visualization.arrayToDataTable([
    ['X', 'Andrew', 'Peter'],
    [100, 100, 100],
    [200, 35, 65],
    [400, 64, 144],
    [1000, 30, 70],
    [3000, 400, 1600],
  ]);

  // adjust data

  for(var i = 0; i < data.getNumberOfRows(); i++){
    var valA = data.getValue(i, 1);
    var valB = data.getValue(i, 2);
    var valTotal = valA + valB;
    data.setValue(i, 1, valA/valTotal);
    data.setValue(i, 2, valB/valTotal);
  };

  // Create and draw the visualization.
  var ac = new google.visualization.AreaChart(document.getElementById('visualization'));
  ac.draw(data, {
    isStacked: true,
    vAxis: {format: "0%",},
    width: 600,
    height: 400,
  });
}

这就是它最终看起来的样子(我真的愚弄了你的数据,所以线条没有平滑 - 遗憾的是,区域图表目前不允许沿着curveType选项的线条平滑线条for Line Charts):

Sample Area Chart

答案 1 :(得分:2)