Я пытаюсь использовать диаграммы Google на своем сайте опросов. Все работает нормально, пока у меня нет голосов, чтобы показать (например, никто не ответил на вопрос). Диаграмма даже не появляется, как вы можете видеть в этом примере: http://jsfiddle.net/au9prxsg/3/
google.setOnLoadCallback(drawChart);
function drawChart() {
var data = google.visualization.arrayToDataTable([
['Task', 'Hours per Day'],
['Work', 0],
['Eat', 0],
['Commute', 0],
['Watch TV', 0],
['Sleep', 0]
]);
var options = {
title: 'My Daily Activities',
sliceVisibilityThreshold: 0
};
var chart = new google.visualization.PieChart(document.getElementById('piechart'));
chart.draw(data, options);
}
Я даже поставил свойство sliceVisibilityThreshold: 0.
Можно ли иметь круговую диаграмму с любыми данными?
Вы можете проверить dataTable, чтобы увидеть, существуют ли ответы, а затем настроить то, что вы отображаете соответствующим образом.
google.setOnLoadCallback(drawChart);
function drawChart() {
var data = google.visualization.arrayToDataTable([
['Task', 'Hours per Day'],
['Work', 0],
['Eat', 0],
['Commute', 0],
['Watch TV', 0],
['Sleep', 0]
]);
if(hasResponses(data, 1){
...
[build your options array and draw you chart]
...
}else{
...
[display something else instead of the chart (i.e., a graphic or text indicating that the question has no responses).]
}
}function hasResponses(datasource, column){
var sumValues = 0;
for(var i = 0; i < datasource.getNumberOfRows(); ++i) {
sumValues = sumValues + datasource.getValue(column, i);
}
if(sumValues > 0){
return true;
}else{
return false;
}
}
Это предполагает, что каждый респондент предоставит значение> 0 по крайней мере для одного вида деятельности (работа, сон и т. Д.), В противном случае сбор данных (опрос) должен иметь категорию «всеохватывающий» (т. Е. «Другое» и т. Д.). ) что позволит вам форсировать ответ на вопрос, не затрагивая целостность ответа.
Предполагая, что ваши данные поступают из какой-то другой базы данных (не введенной вручную в javascript), более быстрый и простой метод может включать подсчет количества ответов в вашем наборе данных перед построением таблицы данных в javascript. Затем, используя логику, аналогичную приведенной выше, отобразите альтернативное сообщение, если существует менее одного ответа.
Изменить перспективу
var data = google.visualization.arrayToDataTable([
['Task', 'Hours per Day'],
['Work', 0],
['Eat', 0],
['Commute', 0],
['Watch TV', 0],
['Sleep', 0],
['No activities or no response', 24]
]);
или же
var data = google.visualization.arrayToDataTable([
['Task', 'Hours per Day'],
['Work no response', 4.8],
['Eat no response', 4.8],
['Commute no response', 4.8],
['Watch TV no response', 4.8],
['Sleep no response', 4.8]
]);
У меня нормально работает? в чем ошибка
Add the js in the external js section
, и просто скопируйте URL-адрес там, это работает