Google 用数字绘制时间轴图表
Google charts timeline with numbers
我正在尝试使用 Google 图表库中的时间线,其中包含数字而不是日期。当我更改提供的基本示例以使用数字而不是日期时,我在页面上得到以下输出,控制台中没有错误。
Cannot read property 'v' of undefined
这是我正在修改的基本示例https://developers.google.com/chart/interactive/docs/gallery/timeline#SimpleExample
简单地将开始和结束类型从日期更改为数字,然后将每行的开始和结束值更改为数字似乎不起作用。
这是一个显示问题的 jsfiddle http://jsfiddle.net/t26yu0w8/
我修改了你的脚本。
<html>
<head>
<script type='text/javascript' src='http://www.google.com/jsapi'></script>
<script type='text/javascript'>
google.load('visualization', '1', {'packages':['annotatedtimeline']});
google.setOnLoadCallback(drawChart);
function drawChart() {
var dataTable = new google.visualization.DataTable();
dataTable.addColumn('date', 'Date');
dataTable.addColumn( 'number', 'Start' );
dataTable.addColumn( 'number', 'End' );
dataTable.addColumn( 'string', 'President' );
dataTable.addRows([
[new Date(2015, 1 ,1), 5 , 9,'Washington' ],
[new Date(2015, 1 ,1), 10, 12, 'Adams' ],
[new Date(2015, 1 ,1), 1, 7, 'Jefferson' ]]);
var chart = new google.visualization.AnnotatedTimeLine(document.getElementById('chart_div'));
chart.draw(dataTable, {displayAnnotations: true});
}
</script>
</head>
<body>
// Note how you must specify the size of the container element explicitly!
<div id='chart_div' style='width: 700px; height: 240px;'></div>
</body>
</html>
如果你使用这张图表
第一个数据必须是日期。
我可以给你举个例子
<html>
<head>
<script type='text/javascript' src='http://www.google.com/jsapi'></script>
<script type='text/javascript'>
google.load('visualization', '1', {'packages':['annotatedtimeline']});
google.setOnLoadCallback(drawChart);
function drawChart() {
var data = new google.visualization.DataTable();
data.addColumn('date', 'Date');
data.addColumn('number', 'Sold Pencils');
data.addColumn('string', 'title1');
data.addColumn('string', 'text1');
data.addColumn('number', 'Sold Pens');
data.addColumn('string', 'title2');
data.addColumn('string', 'text2');
data.addRows([
[new Date(2008, 1 ,1), 30000, undefined, undefined, 40645, undefined, undefined],
[new Date(2008, 1 ,2), 14045, undefined, undefined, 20374, undefined, undefined],
[new Date(2008, 1 ,3), 55022, undefined, undefined, 50766, undefined, undefined],
[new Date(2008, 1 ,4), 75284, undefined, undefined, 14334, 'Out of Stock','Ran out of stock on pens at 4pm'],
[new Date(2008, 1 ,5), 41476, 'Bought Pens','Bought 200k pens', 66467, undefined, undefined],
[new Date(2008, 1 ,6), 33322, undefined, undefined, 39463, undefined, undefined]
]);
var chart = new google.visualization.AnnotatedTimeLine(document.getElementById('chart_div'));
chart.draw(data, {displayAnnotations: true});
}
</script>
</head>
<body>
// Note how you must specify the size of the container element explicitly!
<div id='chart_div' style='width: 700px; height: 240px;'></div>
</body>
</html>
通过使用数字而不是日期作为列类型,Google 假定您使用的是毫秒(无论正确与否)。
如果您按如下方式更新数据:
[new Date(2015, 1 ,1), 5000, 9000,'Washington' ],
[new Date(2015, 1 ,1),10000,12000,'Adams' ],
[new Date(2015, 1 ,1), 1000, 7000,'Jefferson' ]]);
它会显示一些东西。
我想指出,当前的答案是针对 annotatedtimeline
的,这与 OP 询问的 timeline
不同。 Time line requires data in a different format to annotated time line。
Start
和 End
类型中的 number
列实际上是指 unix 时间中的日期。例如。 new Date(2016,0,1).getTime()
这是有效的 OP's jsfiddle。
我正在尝试使用 Google 图表库中的时间线,其中包含数字而不是日期。当我更改提供的基本示例以使用数字而不是日期时,我在页面上得到以下输出,控制台中没有错误。
Cannot read property 'v' of undefined
这是我正在修改的基本示例https://developers.google.com/chart/interactive/docs/gallery/timeline#SimpleExample
简单地将开始和结束类型从日期更改为数字,然后将每行的开始和结束值更改为数字似乎不起作用。
这是一个显示问题的 jsfiddle http://jsfiddle.net/t26yu0w8/
我修改了你的脚本。
<html>
<head>
<script type='text/javascript' src='http://www.google.com/jsapi'></script>
<script type='text/javascript'>
google.load('visualization', '1', {'packages':['annotatedtimeline']});
google.setOnLoadCallback(drawChart);
function drawChart() {
var dataTable = new google.visualization.DataTable();
dataTable.addColumn('date', 'Date');
dataTable.addColumn( 'number', 'Start' );
dataTable.addColumn( 'number', 'End' );
dataTable.addColumn( 'string', 'President' );
dataTable.addRows([
[new Date(2015, 1 ,1), 5 , 9,'Washington' ],
[new Date(2015, 1 ,1), 10, 12, 'Adams' ],
[new Date(2015, 1 ,1), 1, 7, 'Jefferson' ]]);
var chart = new google.visualization.AnnotatedTimeLine(document.getElementById('chart_div'));
chart.draw(dataTable, {displayAnnotations: true});
}
</script>
</head>
<body>
// Note how you must specify the size of the container element explicitly!
<div id='chart_div' style='width: 700px; height: 240px;'></div>
</body>
</html>
如果你使用这张图表 第一个数据必须是日期。
我可以给你举个例子
<html>
<head>
<script type='text/javascript' src='http://www.google.com/jsapi'></script>
<script type='text/javascript'>
google.load('visualization', '1', {'packages':['annotatedtimeline']});
google.setOnLoadCallback(drawChart);
function drawChart() {
var data = new google.visualization.DataTable();
data.addColumn('date', 'Date');
data.addColumn('number', 'Sold Pencils');
data.addColumn('string', 'title1');
data.addColumn('string', 'text1');
data.addColumn('number', 'Sold Pens');
data.addColumn('string', 'title2');
data.addColumn('string', 'text2');
data.addRows([
[new Date(2008, 1 ,1), 30000, undefined, undefined, 40645, undefined, undefined],
[new Date(2008, 1 ,2), 14045, undefined, undefined, 20374, undefined, undefined],
[new Date(2008, 1 ,3), 55022, undefined, undefined, 50766, undefined, undefined],
[new Date(2008, 1 ,4), 75284, undefined, undefined, 14334, 'Out of Stock','Ran out of stock on pens at 4pm'],
[new Date(2008, 1 ,5), 41476, 'Bought Pens','Bought 200k pens', 66467, undefined, undefined],
[new Date(2008, 1 ,6), 33322, undefined, undefined, 39463, undefined, undefined]
]);
var chart = new google.visualization.AnnotatedTimeLine(document.getElementById('chart_div'));
chart.draw(data, {displayAnnotations: true});
}
</script>
</head>
<body>
// Note how you must specify the size of the container element explicitly!
<div id='chart_div' style='width: 700px; height: 240px;'></div>
</body>
</html>
通过使用数字而不是日期作为列类型,Google 假定您使用的是毫秒(无论正确与否)。
如果您按如下方式更新数据:
[new Date(2015, 1 ,1), 5000, 9000,'Washington' ],
[new Date(2015, 1 ,1),10000,12000,'Adams' ],
[new Date(2015, 1 ,1), 1000, 7000,'Jefferson' ]]);
它会显示一些东西。
我想指出,当前的答案是针对 annotatedtimeline
的,这与 OP 询问的 timeline
不同。 Time line requires data in a different format to annotated time line。
Start
和 End
类型中的 number
列实际上是指 unix 时间中的日期。例如。 new Date(2016,0,1).getTime()
这是有效的 OP's jsfiddle。