2013-07-29 84 views
15

我生成一些谷歌圖表,我卡在這裏。 Google允許您堆疊您的列。但它或者是有限的,或者我不能配置它工作。從谷歌採取這裏是表示每年產生的咖啡杯數爲兩個國家的例子:兩個數據集的堆疊柱形圖 - 谷歌圖表

number of cups of BEAN COFFEE per year for Austria and Belgium

說我有另一個數據相同的兩個國家建立,但這次我有速溶咖啡而不是地面。例如:

number of cups of INSTANT COFFEE per year for Austria and Belgium

我想要做的就是堆疊在彼此的頂部這兩個數據集。所以每個專欄將是一個國家,但是兩個部門:豆和速溶咖啡。

我就在想,如果有以下列方式格式化數據表的方式:

['Year', 'Austria', 'Austria (instant)', 'Bulgaria', 'Bulgaria (instant')], 
['2003', 1736060, 10051, 250361, 68564], 
['2004', 1338156, 65161, 786849, 1854654], 
['2005', 1276579, 65451, 120514, 654654] 

產生類似

enter image description here

您的幫助表示讚賞。

+0

嗨,你可以使用組合圖表https://google-developers.appspot.com/chart/interactive/docs/gallery/combochart, –

+0

我不知道怎麼,做工作? – mavili

+0

嗨,看看這裏https://developers.google.com/chart/image/docs/gallery/bar_charts,在這裏的圖表類型,檢查與bvo圖表類型,它可以幫助你更多 –

回答

15

我今天剛剛遇到同樣的問題,並關注您的提交鏈接。看來,剛剛有人回覆說了:

「這實際上是可能與新材料條形圖(儘管 有點迂迴的方式)在新的圖表,如果你犯了一個圖表 堆疊,但是將一些系列放置在不同的軸上,這會爲這些系列創建一個單獨的堆棧。不幸的是,目前還沒有 方法可以完全隱藏軸,並且您必須明確地設置 設置視圖窗口。最終,我們將介紹選項隱藏軸 並對齊視圖窗口,但現在必須做。「

這撥弄似乎幫助我解決這個問題:http://jsfiddle.net/p7o0pjgg/

下面的代碼:

google.load('visualization', '1.1', { 
    'packages': ['bar'] 
}); 
google.setOnLoadCallback(drawStuff); 

function drawStuff() { 
    var data = new google.visualization.DataTable(); 
    data.addColumn('string', 'Topping'); 
    data.addColumn('number', 'Nescafe Instant'); 
    data.addColumn('number', 'Folgers Instant'); 
    data.addColumn('number', 'Nescafe Beans'); 
    data.addColumn('number', 'Folgers Beans'); 
    data.addRows([ 
     ['2001', 321, 621, 816, 319], 
     ['2002', 163, 231, 539, 594], 
     ['2003', 125, 819, 123, 578], 
     ['2004', 197, 536, 613, 298] 
    ]); 

    // Set chart options 
    var options = { 
     isStacked: true, 
     width: 800, 
     height: 600, 
     chart: { 
      title: 'Year-by-year coffee consumption', 
      subtitle: 'This data is not real' 
     }, 
     vAxis: { 
      viewWindow: { 
       min: 0, 
       max: 1000 
      } 
     }, 
     series: { 
      2: { 
       targetAxisIndex: 1 
      }, 
      3: { 
       targetAxisIndex: 1 
      } 
     } 
    }; 

    // Instantiate and draw our chart, passing in some options. 
    var chart = new google.charts.Bar(document.getElementById('chart_div')); 
    chart.draw(data, google.charts.Bar.convertOptions(options)); 
}; 
+0

我剛剛看到了你的答案;)因爲我剛剛離開那個要求,並沒有意識到有一個一年多以前的新答案!但小提琴已經足夠證明它實際上是解決方案。謝謝 – mavili

+0

圖書館的最新版本還有可能嗎?上面的代碼將無法與當前版本 –

+0

@ Julien我相信它仍然在原則上工作。提供的JSFiddle示例可能有一個小錯誤,阻止它的工作。看到我的答案下面的工作副本。 –

4

Visualization API不支持在每行數據中創建多個列堆棧。如果需要,您可以使feature request爲此添加支持。

+0

謝謝隊友,剛剛提交了一個功能請求。如果他們真的添加這個,它會很酷。 – mavili

+1

以下是指向請求的鏈接:[multiple stacked bar charts](http://code.google.com/p/google-visualization-api-issues/issues/detail?id=1270&q=multiple%20stacked%20bar%20charts&sort = owner&colspec = ID%20Type%20Status%20Priority%20Milestone%20Owner%20Summary%20Stars) – mavili

0

丹霍根答案爲我工作。然而,JSFiddle的例子似乎沒有工作(不知道,爲什麼。)這是一個適合我的版本。

google.charts.load('current', {'packages': ['bar']}); 
 
google.charts.setOnLoadCallback(function() { 
 
    $('.service-usage-graph').each(function() { 
 

 
     var table = new google.visualization.DataTable(); 
 
     table.addColumn('string', 'Date'); 
 
     table.addColumn('number', 'UL Peak'); 
 
     table.addColumn('number', 'UL Off-peak'); 
 
     table.addColumn('number', 'DL Peak'); 
 
     table.addColumn('number', 'DL Off-peak'); 
 

 
     table.addRow(['2001-01-01', 1, 2, 3, 4]); 
 
     table.addRow(['2001-01-03', 3, 2, 4, 2]); 
 
     table.addRow(['2001-01-04', 2, 2, 4, 2]); 
 
     table.addRow(['2001-01-05', 0, 1, 4, 5]); 
 
     table.addRow(['2001-01-06', 9, 2, 6, 8]); 
 
     table.addRow(['2001-01-07', 2, 2, 7, 3]); 
 
     var chart = new google.charts.Bar(this); 
 
     var options = google.charts.Bar.convertOptions({ 
 
      isStacked: true, 
 
      series: { 
 
       2: { targetAxisIndex: 1 }, 
 
       3: { targetAxisIndex: 1 } 
 
      }, 
 
      vAxis: { 
 
       viewWindow: { 
 
       max: 15, 
 
       } 
 
      } 
 
     }); 
 
     chart.draw(table, options); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://www.gstatic.com/charts/loader.js"></script> 
 
<div class="service-usage-graph"></div>