GoogleチャートAPIを使用したコードがあります
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load('visualization', '1', {packages: ['annotatedtimeline']});
function drawVisualization() {
var data = new google.visualization.DataTable();
data.addColumn('date', 'Date');
data.addColumn('number', 'Artist');
data.addRows([
[new Date(2008, 1 ,1), 30000],
[new Date(2008, 1 ,2), 14045],
[new Date(2008, 1 ,3), 55022],
[new Date(2008, 1 ,4), 75284],
[new Date(2008, 1 ,5), 41476],
[new Date(2008, 1 ,6), 33322]
]);
var annotatedtimeline = new google.visualization.AnnotatedTimeLine(
document.getElementById('visualization'));
annotatedtimeline.draw(data, {'displayAnnotations': true});
}
google.setOnLoadCallback(drawVisualization);
</script>
<div id="visualization" style="width: 800px; height: 400px;"></div>
これは機能します。
ただし、次のように drawVisualization 関数の外にデータ定義を置いてデータを渡すと、うまくいきません。それはなぜですか?
google.load('visualization', '1', {packages: ['annotatedtimeline']});
function drawVisualization(data) {
var annotatedtimeline = new google.visualization.AnnotatedTimeLine(
document.getElementById('visualization'));
annotatedtimeline.draw(data, {'displayAnnotations': true});
}
var data = new google.visualization.DataTable();
data.addColumn('date', 'Date');
data.addColumn('number', 'Artist');
data.addRows([
[new Date(2008, 1 ,1), 30000],
[new Date(2008, 1 ,2), 14045],
[new Date(2008, 1 ,3), 55022],
[new Date(2008, 1 ,4), 75284],
[new Date(2008, 1 ,5), 41476],
[new Date(2008, 1 ,6), 33322]
]);
google.setOnLoadCallback(function(){drawVisualization(data)});
</script>
<div id="visualization" style="width: 800px; height: 400px;"></div>
どうもありがとう!