javascript - Highcharts - 从数组填充数据

标签 javascript highcharts

我想知道是否有人能明白为什么我的 Highcharts 代码不起作用?我多年来一直试图修复它,但无法让它工作。我看了这个问题Populate JSON object to highchart bar chart寻求帮助,但无法让我的代码工作。

    <?php 
    include('../connection.php');
    $selectCategory = "SELECT CategoryName, COUNT( fkDiaryCategory ) as count
    FROM    `tbldiary`, tbldiarycategories where pkCategory=fkDiaryCategory group by fkDiaryCategory";

    $catResult = mysqli_query($conn,$selectCategory);

    $tableRows = array();
    $i=0;
    while($dataRow = mysqli_fetch_array($catResult, MYSQLI_ASSOC)){
    $tableRows[$i]['CategoryName']=$dataRow['CategoryName'];
    $tableRows[$i]['count']=$dataRow['count'];
    $i++;
     };
     $data = (json_encode($tableRows));
     ?> 
    <script>

    var data = '<?php echo $data ?>';
    console.log(data);
    $(function() {
        // Populate series
        var processed_json = new Array();
        for (i = 0; i < data.length; i++) {
            processed_json.push([parseInt(data[i].count),data[i].CategoryName]);
        }

    $( document ).ready(function() {
        // draw chart
        var options={
            chart: {

               renderTo: 'container',                   
                type: "column"
            },
            title: {
                text: "Diary Entries by Category"
            },
            xAxis: {
                categories: data.CategoryName,
                title: {
                    text: "CategoryName"
                }
            },
            yAxis: {
              min:0,
                title: {
                    text: "Total"
                }
            },
            series: data
        };

        var chart = new Highcharts.Chart(options);
        });
    });
</script>
  <div id="container" style="height: 300px"></div>
</body>
</html>

我的讲师帮助使用 while 循环填充processed_json 数组,我不是 100% 确定是否需要这样做,但我把它留在了以防万一。提前致谢!

编辑添加:

当你执行 console.log 时,我输入的数据看起来像这样 [{"CategoryName":"家庭生活烦恼","count":"2"},{"CategoryName":"社交生活烦恼","count":"2"},{"CategoryName":"考试压力","count":"1"},{"CategoryName":"大学生活压力","count":"1"},{"CategoryName":"工作压力","count":"1"}]

最佳答案

如果您的数据与您在评论中发布的数据相同,那么您正在解析系列数据,而不是系列本身。如果您为每个点设置名称,则为 xAxis 设置category 类型将强制图表使用点的名称作为类别。

示例:http://jsfiddle.net/7nLz2b8d/1/

var data = [{
  "CategoryName": "Home life worries",
  "count": "2"
}, {
  "CategoryName": "Social life worries",
  "count": "2"
}, {
  "CategoryName": "Exam stress",
  "count": "1"
}, {
  "CategoryName": "University life stress",
  "count": "1"
}, {
  "CategoryName": "Work stress",
  "count": "1"
}];

$(function() {
  // Populate series
  var processed_json = [],
      len = data.length;

  for (i = 0; i < len; i++) {
    processed_json.push([data[i].CategoryName, parseInt(data[i].count)]);
  }

  $(document).ready(function() {
    // draw chart
    var options = {
      chart: {
        renderTo: 'container',
        type: "column"
      },
      title: {
        text: "Diary Entries by Category"
      },
      xAxis: {
        type: 'category',
        title: {
          text: "CategoryName"
        }
      },
      yAxis: {
        min: 0,
        title: {
          text: "Total"
        }
      },
      series: [{
        data: processed_json
      }]
    };

    var chart = new Highcharts.Chart(options);

  });
});

关于javascript - Highcharts - 从数组填充数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36138131/

相关文章:

javascript - Ajax 和 session

javascript - 应该作为方法执行的内部函数返回未定义

javascript - 放大时热图单元格之间的白线(浏览器缩放)

javascript - 如何在指令中访问 Controller (从外部文件)的范围?

javascript - 来自服务的 $emit 或 $broadcast 事件并在一个(或多个) Controller 中监听它们

jquery - bootstrap 选项卡中的 highcharts 图表显示不正确

javascript - 如何在 Ruby on Rails 中显示条形图的图例?

highcharts 添加带有图像的情节线标签

javascript - 使用 highstocks 创建间隔的垂直线

javascript - 如何为工作海报 REST 调用定义 MFP javascript 适配器?