2016-09-20 3 views
1

私は動的なデータを持つ棒グラフを溺死させています。 なぜ私はまだデータ型エラーを取得するのか分かりませんでした。 これは私の関数である:google chart指定された軸のすべての系列は、同じデータ型でなければなりません。

function drawBasic(object,id,title) { 

var array = ['publisher','price','date']; 
var data = new google.visualization.DataTable(); 
for(var j = 0; j < array.length; j++){ 
    if(array[j] == 'publisher'){ 
     data.addColumn('string', array[j]); 
    } else if (array[j] == 'revenue'){ 
     data.addColumn('number', array[j]); 
    } else if(array[j] == 'date'){ 
     data.addColumn('date', 'X'); 
    } 
} 

$.each(object,function (key,val) { 
    var temp = []; 
    var outterArray = []; 
    var day = new Date(key); 
    for(var y = 0; y < val.length; y++){ 

     for(var x = 0; x < array.length; x++){ 
      if(array[x] =='publisher'){ 
        temp.push(val[y][array[x]]); 
      } else if(array[x] != 'date' && array[x] !='publisher'){ 
        temp.push(parseObjToNum(val[y][array[x]])); 
      } 
     } 
     temp.push(day); 
     outterArray.push(temp); 
     temp = []; 
    } 
    data.addRows(outterArray); 
}); 

var options = { 
    title: title, 
    hAxis: { 
     "format": "y-MM-d" 
    } 
}; 
var chart = new google.visualization.ColumnChart(document.getElementById(id)); 
var formatter = new google.visualization.NumberFormat({fractionDigits: true}); 
formatter.format(data, 1, 2, 3); 
chart.draw(data, options); 
} 

列は次のように構成されていますパブリッシャータイプ文字列、価格の種類数とX型の日付。

行単一のデータ例:

は[ '偉大をジョシュ' 12、火2016年9月20日午前三時00分00秒GMT + 0300(IDT)]

データが順序付けされます列によると。

私は、各日付ごとに出版社とその価格を提示することを目指しています。 別のグラフで表現しても構いませんが、問題ではないと思います。

どのような提案も高く評価されます。

答えて

1

各チャートタイプは、棒グラフのための具体的なData Format

があり、そして他のほとんどは、'date'列は、それがシリーズ列にすることはできません
最初の列としてのみ有効です - 数字のみ可能

'annotation'または'tooltip'

のいずれかを使用して Column Role
を使用することをお勧めし、チャートに日付を表​​示します

はい作業スニペット次...

google.charts.load('current', { 
 
    callback: function() { 
 
    var container = document.getElementById('chart_div'); 
 
    var chart = new google.visualization.BarChart(container); 
 

 
    var dataTable = new google.visualization.DataTable(); 
 
    dataTable.addColumn({type: 'string', label: 'Publisher'}); 
 
    dataTable.addColumn({type: 'number', label: 'Price'}); 
 
    dataTable.addColumn({type: 'string', role: 'annotation'}); 
 

 
    dataTable.addRows([ 
 
     ['josh the great', 12, 'Tue Sep 20 2016 03:00:00 GMT+0300 (IDT)'], 
 
    ]); 
 

 
    chart.draw(dataTable); 
 
    }, 
 
    packages: ['corechart'] 
 
});
<script src="https://www.gstatic.com/charts/loader.js"></script> 
 
<div id="chart_div"></div>

+0

を参照してください!アノテーションは欠けていた部分でした!ありがとう! – ohadsas

関連する問題