Javascript 将Google可视化图表中所有缺失的数据点初始化为0
我试图从MySQL数据库中以小时为单位绘制某个给定ID的记录数 我遇到的问题是,如果给定的ID在给定的时间内有0条记录,我就不会为表生成数据点。这会导致表格在两个计数之间插值(如果有) 两个小时之间不算 例:下午1点有4条记录,下午2点有0条记录,下午3点有2条记录。该表将在4和2之间绘制一条直线,因此在表上显示下午2点有3条记录,而实际上没有记录 我确信原因是我没有为不存在的记录提供null或0值,但我不确定如何去做 表中的一些信息:Javascript 将Google可视化图表中所有缺失的数据点初始化为0,javascript,php,google-visualization,Javascript,Php,Google Visualization,我试图从MySQL数据库中以小时为单位绘制某个给定ID的记录数 我遇到的问题是,如果给定的ID在给定的时间内有0条记录,我就不会为表生成数据点。这会导致表格在两个计数之间插值(如果有) 两个小时之间不算 例:下午1点有4条记录,下午2点有0条记录,下午3点有2条记录。该表将在4和2之间绘制一条直线,因此在表上显示下午2点有3条记录,而实际上没有记录 我确信原因是我没有为不存在的记录提供null或0值,但我不确定如何去做 表中的一些信息: id int AI TagNumb
id int AI
TagNumber int
TimeStamp timestamp
BatteryStatus varchar
Location int
下面是我用来计算每小时给定标记号的实例数的php代码
$result = $mysqli->('SELECT hour(TimeStamp) as Hour, count(*) as Count FROM table WHERE Location = 1 AND TagNumber = 12345678 GROUP BY Hour');
// The values here are hard coded for testing purposes.
$rows = array();
$table = array();
$table['cols'] = array(
array('label' => 'Hour', 'type' => 'number'),
array('label' => 'Count', 'type' => 'number')
);
while($row = mysqli_fetch_assoc($result)) {
$temp = array();
$temp[] = array('v' => (int) $row['Hour']);
$temp[] = array('v' => (int) $row['Count']);
$rows[] = array('c' => $temp);
}
$table['rows'] = $rows;
$jsonTable = json_encode($table);
然后,我将json编码的表传递给google可视化api
我认为我需要做的是将每小时1到24之间的值设置为0,我不知道如何实现这一点
我尝试用0作为“Count”值初始化一个从1到24小时的数组,但是我肯定做了一些错误的事情,php抛出了错误
12处的点应为0,但它在11和13之间插值
这是我的价值观图表:
- 第10小时->计数4
- 第11小时->计数2
- 第13小时->计数1
- 第14小时->计数3
$result = $mysqli->('SELECT hour(TimeStamp) as Hour, count(*) as Count FROM table WHERE Location = 1 AND TagNumber = 12345678 GROUP BY Hour');
// The values here are hard coded for testing purposes.
$rows = array();
$table = array();
$table['cols'] = array(
array('label' => 'Hour', 'type' => 'number'),
array('label' => 'Count', 'type' => 'number')
);
$hoursNotAvail = array(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23);
while($row = mysqli_fetch_assoc($result)) {
$temp = array();
$temp[] = array('v' => (int) $row['Hour']);
$temp[] = array('v' => (int) $row['Count']);
$rows[] = array('c' => $temp);
$hoursNotAvail[(int) $row['Hour']] = -1;
}
foreach($hoursNotAvail as $k => $v){
if($v != -1){
$temp = array();
$temp[] = array('v' => $k);
$temp[] = array('v' => 0);
$rows[] = array('c' => $temp);
}
}
$table['rows'] = $rows;
$jsonTable = json_encode($table);
谢谢,最后我做了一些非常相似的事情。效果很好