该错误表明 y 轴的列不能是字符串类型。
错误是由于使用静态方法引起的--> arrayToDataTable
arrayToDataTable
试图猜测传递给方法的数据类型。
如果无法确定类型,则默认为字符串。
在“真实”数组的例子中,只有一行数据。
它必须使用的唯一值是null
.
因此它无法正确确定类型并默认为字符串。
您可以在以下工作片段中看到此结果...
google.charts.load('current', {
packages:['corechart']
}).then(function () {
var jsonData = [
['Día', 'Enfado', 'Irritabilidad','Dolor', 'Ansiedad', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p'],
['28', null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 180, 190, null]
];
var data = google.visualization.arrayToDataTable(jsonData);
for (var i = 0; i < data.getNumberOfColumns(); i++) {
console.log(i, data.getColumnType(i));
}
});
<script src="https://www.gstatic.com/charts/loader.js"></script>
相反,您需要手动构建数据表,
为每列设置特定的列类型。
var data = new google.visualization.DataTable();
data.addColumn('string', 'Día'); // <-- x-axis - string
data.addColumn('number', 'Enfado'); // <-- y-axis - number
data.addColumn('number', 'Irritabilidad'); // <-- y-axis - number
...
但是我们可以
根据收到的json数据动态构建数据表。
var jsonData = [
['Día', 'Enfado', 'Irritabilidad','Dolor', 'Ansiedad', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p'],
['28', null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 180, 190, null]
];
var data = new google.visualization.DataTable();
jsonData.forEach(function (row, indexRow) {
if (indexRow === 0) {
row.forEach(function (column, indexCol) {
if (indexCol === 0) {
data.addColumn('string', column);
} else {
data.addColumn('number', column);
}
});
} else {
data.addRow(row);
}
});
请参阅以下工作片段...
google.charts.load('current', {
packages:['corechart']
}).then(function () {
var jsonData = [
['Día', 'Enfado', 'Irritabilidad','Dolor', 'Ansiedad', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p'],
['28', null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 180, 190, null]
];
var data = new google.visualization.DataTable();
jsonData.forEach(function (row, indexRow) {
if (indexRow === 0) {
row.forEach(function (column, indexCol) {
if (indexCol === 0) {
data.addColumn('string', column);
} else {
data.addColumn('number', column);
}
});
} else {
data.addRow(row);
}
});
var options = {
chartArea: {
left: 64,
top: 48,
right: 32,
bottom: 64,
height: '100%',
width: '100%'
},
height: '100%',
legend: {
position: 'none'
},
width: '100%'
};
var chart = new google.visualization.ScatterChart(document.getElementById('chart'));
chart.draw(data, options);
});
html, body {
height: 100%;
margin: 0px 0px 0px 0px;
overflow: hidden;
padding: 0px 0px 0px 0px;
}
#chart {
height: 100%;
min-height: 400px;
}
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="chart"></div>