javascript - 带有时间的谷歌图表来自 php json

标签 javascript jquery json charts google-visualization

我从文件 countrows.php 中得到这个 json 输出:

[  
   {  
      "time_stamp":"08:22:46 am",
      "ph":"8",
      "moist":"0"
   },
   {  
      "time_stamp":"08:22:50 am",
      "ph":"8",
      "moist":"0"
   },
   {  
      "time_stamp":"08:22:54 am",
      "ph":"8",
      "moist":"0"
   },
   {  
      "time_stamp":"08:22:57 am",
      "ph":"8",
      "moist":"0"
   },
   {  
      "time_stamp":"08:23:01 am",
      "ph":"8",
      "moist":"0"
   },
   {  
      "time_stamp":"08:23:05 am",
      "ph":"8",
      "moist":"0"
   },
   {  
      "time_stamp":"08:23:09 am",
      "ph":"8",
      "moist":"0"
   }
]

我想在图表中显示时间(来 self 的 json 文件),特别是在水平方向。类似于下图,但黄绿线显示的是我的 json 文件中的时间。

enter image description here

顺便说一句,以下是我在 google 图表中的 javascript 代码,我需要有关如何处理以下代码的帮助:

google.charts.load('current', {
  callback: drawChart,
  packages: ['corechart']
});

// onload callback
function drawChart() {
  // JSONP request
  var jsonData = $.ajax({
    url: 'countrows.php',
    dataType: 'json',
  }).done(function (results) {
    var data = new google.visualization.DataTable(jsonData);

    data.addColumn('datetime', 'time_stamp');
    data.addColumn('number', 'ph');
    data.addColumn('number', 'moist');

    $.each(results, function (i, row) {
      data.addRow([
       new Date(row.time_stamp),
       parseFloat(row.ph),
       parseFloat(row.moist)
       ]);
    });

    var chart = new google.visualization.AreaChart($('#chart').get(0));

    chart.draw(data, {
      title: 'Soil Analysis',
      curveType: 'function',
      displayAnnotations: true,
      //legend: { position: 'bottom' }
      pointSize: 10
      hAxis: {format: 'Y,M,d,H';}
    });
  });
}

drawChart();

setInterval(drawChart, 10000);

最佳答案

最简单的方法是将第一列更改为 --> 'string'

data.addColumn('string', 'time_stamp');

此外,由于 ajax 是异步的,因此无需分配给变量,
删除这个 --> var jsonData =

并从数据表构造函数的参数中删除...

var data = new google.visualization.DataTable(jsonData);  // <-- remove jsonData

尝试以下代码片段...

google.charts.load('current', {
  callback: drawChart,
  packages: ['corechart']
});

// onload callback
function drawChart() {
  $.ajax({
    url: 'countrows.php',
    dataType: 'json'
  }).done(function (results) {
    var data = new google.visualization.DataTable();
    data.addColumn('string', 'time_stamp');
    data.addColumn('number', 'ph');
    data.addColumn('number', 'moist');
    $.each(results, function (i, row) {
      data.addRow([
        row.time_stamp,
        parseFloat(row.ph),
        parseFloat(row.moist)
      ]);
    });
    var chart = new google.visualization.AreaChart($('#chart').get(0));
    chart.draw(data, {
      title: 'Soil Analysis',
      curveType: 'function',
      pointSize: 10
    });
  });
}
drawChart();
setInterval(drawChart, 10000);

关于javascript - 带有时间的谷歌图表来自 php json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46283995/

相关文章:

javascript - 为什么每次函数更改后都会存储多个对象?

javascript - 如何将 JSON 数据格式化为两个 html 表

javascript - Node 红色 : TypeError: Cannot read property 'nodes' of undefined

javascript - 在javascript中对ajax滚动内容进行排序

javascript - 如何移动背景图像图案?

javascript - Youtube Iframe Api 获取视频标题

javascript - discord.js 中的 User 和 GuildMember 有什么区别?

javascript - jQuery iBox(灯箱克隆)和 IFRAMES

javascript - jQuery:选择外部标签

javascript - List返回Json数据有Error