簡體   English   中英

在Google可視化圖表中將所有丟失的數據點初始化為0

[英]Initialize all missing data points to 0 in Google Visualization chart

我試圖每小時從MySQL數據庫繪制一個給定ID的記錄數。

我遇到的問題是,如果給定小時內給定ID有0條記錄,則不會為該表生成數據點。 如果小時之間沒有計數,這將導致表格在兩個計數之間進行插值。

例如:下午1點有4條記錄,下午2點有0條記錄,下午3點有2條記錄。 該表將在4和2之間畫一條直線,因此在表上會顯示在下午2點有3條記錄,而實際上沒有。

我確定原因是我沒有為不存在的記錄提供null或0值,但是我不確定如何去做。

桌子上的一些信息:

id             int AI
TagNumber      int
TimeStamp      timestamp
BatteryStatus  varchar
Location       int

這是我用來每小時計算給定TagNumber實例數量的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之間,而mysql查詢返回的記錄沒有設置為0,我只是不知道該如何實現。

我嘗試初始化從0到24的Hours數組,並使用0作為'Count'值,但是我肯定做錯了,php拋出錯誤。 在此處輸入圖片說明

12點的讀數應為0,但取而代之的是11和13之間。

這是我的帶有值的圖表:

  • 小時10->計數4
  • 11小時->計數2
  • 13小時->計數1
  • 14小時->計數3

在這種情況下,我需要1-> 9、12和15-> 24小時顯示0。

嘗試這個:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM