2013-07-29 11 views
15

私はいくつかのGoogle Chartsを生成しています。 Googleでは、列を積み重ねることができます。しかし、それは限られているか、それが動作するように設定することはできません。グーグルから撮影、ここ2カ国のために毎年生産コーヒーのカップ数を示す一例である:2つのデータセットの縦棒グラフ - Google Charts

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

は、私が同じ2つの国のために別のデータセットを持っていますが、今回は私がインスタントコーヒーを持っていると言います地面の代わりに。例:

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

私が何をしたいのですが、何が互いの上にこれらの2つのデータセットを積み重ねることです。したがって、各列は単一の国になりますが、2つの部門:豆とインスタントコーヒーです。

次の方法でデータテーブルをフォーマットする方法があった場合、私は考えていた:

['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

私は今日この同じ問題に遭遇し、投稿リンクをたどりました。ちょうど最近誰かがこれに答えたようだ:

「これは(多少遠回り ではあるが)新しい素材棒グラフで実際に可能である新しいチャートでは、あなたが積み上げグラフ を作る場合は、。残念ながら、軸を完全に非表示にする方法は現在ありません。また、明示的に ビューウィンドウを設定する必要があります。 axis を隠してビューウィンドウを整列するオプションがありますが、これは今のところ必要です。 "

このバイオリンは私がこの問題を解決するために見えた: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

私は実際にあなたの答えを見ました; 1年以上前からの新しい答え!しかし、フィドルは、それが実際に解決策であるという証拠です。ありがとう – mavili

+0

最新のライブラリのリビジョンではまだ可能ですか?上記のコードは現在のバージョンでは動作しません –

+0

@Julien私はそれがまだ原則として動作すると信じています。 JSFiddleの例では、動作しない小さなバグがあります。作業コピーについては私の答えを参照してください。 –

4

ビジュアライゼーションAPIでは、データ行ごとに複数の列スタックを作成することはできません。必要に応じてfeature requestにこのサポートを追加することができます。

+0

おかげで、機能要求が送信されました。実際にそれを追加すれば、とても涼しいでしょう。 – mavili

+1

リクエストへのリンクは次のとおりです。[複数スタックバーチャート](http://code.google.com/p/google-visualization-api-issues/issues/detail?id=1270&q=multiple%20stacked%20bar%20charts&sort =所有者&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>

関連する問題