Google Charts 时间序列中的多折线图
Google Charts Multiple Line Charts in Time Series
如何制作包含多个折线图的 google 图表。我知道如何在 chartsjs 中做到这一点,但它让我在 google 图表中感到困惑。我的尝试:
<script>
google.charts.load('current', {packages: ['corechart', 'line']});
google.charts.setOnLoadCallback(drawCurveTypes);
function drawCurveTypes() {
var data = new google.visualization.DataTable();
data.addColumn('date', 'X');
data.addColumn('number', 'Person 1');
data.addColumn('number', 'Person 2');
data.addRows(9);
data.setValue(0, 0, new Date(2010, 1, 1));
data.setValue(0, 1, 215);
data.setValue(0, 2, 215);
data.setValue(1, 0, new Date(2010, 2, 1));
data.setValue(1, 2, 213);
data.setValue(2, 0, new Date(2010, 2, 4));
data.setValue(2, 2, 213);
data.setValue(3, 0, new Date(2010, 2, 8));
data.setValue(3, 2, 213);
data.setValue(4, 0, new Date(2010, 3, 1));
data.setValue(4, 2, 220);
data.setValue(5, 0, new Date(2010, 4, 1));
data.setValue(5, 2, 190);
var options = {
{#chartArea:{ width:"100%", height:"100%"},#}
title: "Persons Performance over Time",
height: 500,
width: 1300,
hAxis: {
title: 'Time'
},
vAxis: {
title: 'Scores'
},
series: {
1: {curveType: 'function'}
},
};
var chart = new google.visualization.LineChart(document.getElementById('chart_div'));
chart.draw(data, options);
}
</script>
不过好像只做了一张折线图。随着时间的推移,我有第 1 个人和第 2 个人的分数,所以它是一个时间序列数据。这是我的输出目标:
看来你的想法是对的,你只需要为第一个系列添加值。
在这里,您已经为两个系列添加了值。
data.setValue(0, 0, new Date(2010, 1, 1));
data.setValue(0, 1, 215); // series 1
data.setValue(0, 2, 215); // series 2
但由于它们都在同一个 y 轴值上,因此只有一个可见。
并且不再添加第 1 行的值,因此只绘制了一个点。
data.setValue(1, 0, new Date(2010, 2, 1));
data.setValue(1, 2, 213); // series 2
data.setValue(2, 0, new Date(2010, 2, 4));
data.setValue(2, 2, 213); // series 2
data.setValue(3, 0, new Date(2010, 2, 8));
data.setValue(3, 2, 213); // series 2
data.setValue(4, 0, new Date(2010, 3, 1));
data.setValue(4, 2, 220); // series 2
data.setValue(5, 0, new Date(2010, 4, 1));
data.setValue(5, 2, 190); // series 2
要显示系列 1,您需要为数据 table 第 1 列添加值。
所以它需要类似于以下...
data.setValue(1, 0, new Date(2010, 2, 1));
data.setValue(1, 1, 200); // series 1
data.setValue(1, 2, 213); // series 2
data.setValue(2, 0, new Date(2010, 2, 4));
data.setValue(2, 1, 200); // series 1
data.setValue(2, 2, 213); // series 2
data.setValue(3, 0, new Date(2010, 2, 8));
data.setValue(3, 1, 210); // series 1
data.setValue(3, 2, 213); // series 2
data.setValue(4, 0, new Date(2010, 3, 1));
data.setValue(4, 1, 207); // series 1
data.setValue(4, 2, 220); // series 2
data.setValue(5, 0, new Date(2010, 4, 1));
data.setValue(5, 1, 177); // series 1
data.setValue(5, 2, 190); // series 2
编辑
setValue
方法采用以下参数...
setValue(rowIndex, columnIndex, value);
第一个参数是要更新的数据table中的行索引。
第二个参数是要更新的数据 table 中的列索引。
在这里,您要添加 9 个空行...
data.addRows(9);
然后需要您返回并单独更新每一行和每一列。
data.setValue(0, 0, new Date(2010, 1, 1));
data.setValue(0, 1, 215);
data.setValue(0, 2, 215);
但是如果您已经有了该行的值,
您可以使用 addRow
方法。
因此,不要添加 9 个空白行,只需一次添加一个行值...
data.addRow([new Date(2010, 1, 1), 215, 215]);
或者如果您的所有数据都是数组形式,
您可以使用 addRows
方法同时添加所有行,
不设置行数...
data.addRows([
[new Date(2010, 1, 1), 215, 215],
[new Date(2010, 2, 1), 215, 215],
[new Date(2010, 3, 1), 215, 215]
]);
如何制作包含多个折线图的 google 图表。我知道如何在 chartsjs 中做到这一点,但它让我在 google 图表中感到困惑。我的尝试:
<script>
google.charts.load('current', {packages: ['corechart', 'line']});
google.charts.setOnLoadCallback(drawCurveTypes);
function drawCurveTypes() {
var data = new google.visualization.DataTable();
data.addColumn('date', 'X');
data.addColumn('number', 'Person 1');
data.addColumn('number', 'Person 2');
data.addRows(9);
data.setValue(0, 0, new Date(2010, 1, 1));
data.setValue(0, 1, 215);
data.setValue(0, 2, 215);
data.setValue(1, 0, new Date(2010, 2, 1));
data.setValue(1, 2, 213);
data.setValue(2, 0, new Date(2010, 2, 4));
data.setValue(2, 2, 213);
data.setValue(3, 0, new Date(2010, 2, 8));
data.setValue(3, 2, 213);
data.setValue(4, 0, new Date(2010, 3, 1));
data.setValue(4, 2, 220);
data.setValue(5, 0, new Date(2010, 4, 1));
data.setValue(5, 2, 190);
var options = {
{#chartArea:{ width:"100%", height:"100%"},#}
title: "Persons Performance over Time",
height: 500,
width: 1300,
hAxis: {
title: 'Time'
},
vAxis: {
title: 'Scores'
},
series: {
1: {curveType: 'function'}
},
};
var chart = new google.visualization.LineChart(document.getElementById('chart_div'));
chart.draw(data, options);
}
</script>
不过好像只做了一张折线图。随着时间的推移,我有第 1 个人和第 2 个人的分数,所以它是一个时间序列数据。这是我的输出目标:
看来你的想法是对的,你只需要为第一个系列添加值。
在这里,您已经为两个系列添加了值。
data.setValue(0, 0, new Date(2010, 1, 1));
data.setValue(0, 1, 215); // series 1
data.setValue(0, 2, 215); // series 2
但由于它们都在同一个 y 轴值上,因此只有一个可见。
并且不再添加第 1 行的值,因此只绘制了一个点。
data.setValue(1, 0, new Date(2010, 2, 1));
data.setValue(1, 2, 213); // series 2
data.setValue(2, 0, new Date(2010, 2, 4));
data.setValue(2, 2, 213); // series 2
data.setValue(3, 0, new Date(2010, 2, 8));
data.setValue(3, 2, 213); // series 2
data.setValue(4, 0, new Date(2010, 3, 1));
data.setValue(4, 2, 220); // series 2
data.setValue(5, 0, new Date(2010, 4, 1));
data.setValue(5, 2, 190); // series 2
要显示系列 1,您需要为数据 table 第 1 列添加值。
所以它需要类似于以下...
data.setValue(1, 0, new Date(2010, 2, 1));
data.setValue(1, 1, 200); // series 1
data.setValue(1, 2, 213); // series 2
data.setValue(2, 0, new Date(2010, 2, 4));
data.setValue(2, 1, 200); // series 1
data.setValue(2, 2, 213); // series 2
data.setValue(3, 0, new Date(2010, 2, 8));
data.setValue(3, 1, 210); // series 1
data.setValue(3, 2, 213); // series 2
data.setValue(4, 0, new Date(2010, 3, 1));
data.setValue(4, 1, 207); // series 1
data.setValue(4, 2, 220); // series 2
data.setValue(5, 0, new Date(2010, 4, 1));
data.setValue(5, 1, 177); // series 1
data.setValue(5, 2, 190); // series 2
编辑
setValue
方法采用以下参数...
setValue(rowIndex, columnIndex, value);
第一个参数是要更新的数据table中的行索引。
第二个参数是要更新的数据 table 中的列索引。
在这里,您要添加 9 个空行...
data.addRows(9);
然后需要您返回并单独更新每一行和每一列。
data.setValue(0, 0, new Date(2010, 1, 1));
data.setValue(0, 1, 215);
data.setValue(0, 2, 215);
但是如果您已经有了该行的值,
您可以使用 addRow
方法。
因此,不要添加 9 个空白行,只需一次添加一个行值...
data.addRow([new Date(2010, 1, 1), 215, 215]);
或者如果您的所有数据都是数组形式,
您可以使用 addRows
方法同时添加所有行,
不设置行数...
data.addRows([
[new Date(2010, 1, 1), 215, 215],
[new Date(2010, 2, 1), 215, 215],
[new Date(2010, 3, 1), 215, 215]
]);