здесь есть несколько проблем ...
во-первых, следующее утверждение load
неверно, оно для старой версии гугл-чартов.
google.load("visualization", "1", {packages:["corechart"]});
его следует заменить на ...
google.charts.load('current', {packages: ['corechart']});
см. обновить код загрузчика библиотеки для получения дополнительной информации ...
затем вам нужно дождаться завершения оператора load
,
, прежде чем использовать какие-либо компоненты диаграммы Google,
есть несколько способов ...
1) вы можете использоватьобещаю, что оператор load
вернется.
google.charts.load('current', {
packages: ['corechart']
}).then(function () {
// place chart code here
});
2) использовать свойство callback
оператора load
.
google.charts.load('current', {
packages: ['corechart'],
callback: function () {
// place chart code here
}
});
3) использовать метод обратного вызова setOnLoadCallback
.
google.charts.load('current', {packages: ['corechart']});
google.charts.setOnLoadCallback(function () {
// place chart code here
});
очевидно, вы можете заменить любую из вышеперечисленных анонимных функций на вашу именованную, например,
google.charts.load('current', {
packages: ['corechart'],
callback: drawChart
});
примечание: arrayToDataTable
- это static метод, ключевое слово new
не требуется ...
var dataDraw = google.visualization.arrayToDataTable(data);
EDIT
, если вы получили сообщение об ошибке ...
Data for column(s) axis #0 cannot be of type String
это означает, что значения для столбцов оси Y форматируются как строки, а не числа.(столбцы> 0)
, чтобы исправить проблему, добавить вычисляемый столбец в представление,
и проанализировать значение как число с плавающей запятой.
var view = new google.visualization.DataView(dataDraw);
view.setColumns([0, {
calc: function (dt, row) {
return parseFloat(dt.getValue(row, 1));
},
type: 'number',
label: dataDraw.getColumnLabel(1)
}]);