谷歌没有数据的图表饼图

时间:2014-12-01 12:46:31

标签: javascript php charts google-visualization

我试图在我的民意调查中使用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);
  }

enter image description here

我甚至把属性sliceVisibilityThreshold:0。 是否可以使用包含任何数据的饼图?

3 个答案:

答案 0 :(得分:1)

改变观点

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]
        ]);

答案 1 :(得分:0)

JS Fiddle

适合我吗?什么是错误

Add the js in the external js section,只需在那里复制网址即可,

答案 2 :(得分: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;
    }
  }

这假设每个受访者都会提供一个&gt; 0表示至少有一项活动(工作,睡眠等),如果没有,那么数据收集(调查)应该有一个包罗万象的类别(即&#34;其他&#34;等),这将允许你在不影响回复完整性的情况下强制回答问题。

假设您的数据来自其他数据库(不是手动输入到javascript),更快,更简单的方法可能涉及在javascript中构建数据表之前计算数据集中的响应数。然后,使用与上面类似的逻辑,如果存在少于一个响应,则显示备用消息。