谷歌可视化条形图堆叠两个栏

时间:2016-06-16 09:51:07

标签: google-visualization bar-chart stacked-chart

我有一个谷歌可视化条形图sample here,其数据格式如下所示。

 var data = google.visualization.arrayToDataTable([
          ['Year', 'Sales', 'Expenses', 'Profit'],
          ['2014', 1000, 400, 200],
          ['2015', 1170, 460, 250],
          ['2016', 660, 1120, 300],
          ['2017', 1030, 540, 350]
        ]);

如果销售是一个单独的酒吧,如何使费用和利润叠加?

1 个答案:

答案 0 :(得分:1)

目前Google Charts API在内置功能中没有这个功能,但是通过对DataTable和图表选项进行一些改造,您仍然可以实现这一目标。

我的解决方案

“堆积条形图”应包含“仅支出和利润”的值,以避免使用“销售”的“堆积”条形图将“销售”数据列中的值表示为零。通过具有类似的数据行创建单独的销售栏,但具有Sales的值,其余为零。需要指定日期数据类型以便将所有条形图分组为相同日期,如果未实施,则每个条形图与同一年份之间将存在间隙。  有关列的日期表示的更多信息可用here

var data = google.visualization.arrayToDataTable([
    [ {label: 'Year', id: 'year', type: 'date'},
      {label: 'Sales', id: 'Sales', type: 'number'}, 
      {label: 'Expenses', id: 'Expenses', type: 'number'},
      {label: 'Profit', id: 'Profit', type: 'number'}],
      [{v:new Date('2014'), f:'2014'}, 0, 400, 200],
      [{v:new Date('2014'), f:'2014'}, 1000, 0, 0],
      [{v:new Date('2015'), f:'2015'}, 0, 460, 250],
      [{v:new Date('2015'), f:'2015'}, 1170, 0, 0],
      [{v:new Date('2016'), f:'2016'}, 0, 1120, 300],
      [{v:new Date('2016'), f:'2016'}, 600, 0, 0],
      [{v:new Date('2017'), f:'2017'}, 0, 540, 350],
      [{v:new Date('2017'), f:'2017'}, 1030, 0, 0]
    ]);

要实现堆积条,请使用Google图表配置选项isStacked: true。为避免垂直轴的作用类似于具有月和日的时间轴,垂直轴的格式设置为使用vAxis: {format: 'yyyy'}显示年份。有关格式的更多信息可用here。为避免不同年份栏之间的间距,使用了功能bar: {groupWidth: '90%'}

var options = {
      chart: {
        title: 'Company Performance',
        subtitle: 'Sales, Expenses, and Profit: 2014-2017',
      },
      bars: 'horizontal', // Required for Material Bar Charts.
      hAxis: {format: 'decimal'},
      vAxis: {
        format: 'yyyy'
      },
      height: 400,
      colors: ['#1b9e77', '#d95f02', '#7570b3'],
      isStacked: true,
      bar: {groupWidth: '90%'}
    };