Диапазон дат Инструменты Google Chart - PullRequest
4 голосов
/ 07 февраля 2012

Я пытаюсь отобразить данные на линейном графике с помощью Google Charts.Данные отображаются нормально, однако я хотел бы установить диапазон дат для отображения.

Данные отправляются из базы данных в буквальном формате JSON:

{
    "cols": [
                {"label": "Week", "type": "date"},
                {"label": "Speed", "type": "number"},               
                {"type":"string","p":{"role":"tooltip"}},   
                {"type":"string","p":{"role":"tooltip"}},   
                {"type":"string","p":{"role":"tooltip"}},   
                {"type":"string","p":{"role":"tooltip"}},   

            ],
    "rows": [
               {"c":[{"v": "Date('.$date.')"},{"v": null},{"v": null},{"v": null},{"v": null},{"v": null}]},
               {"c":[{"v": "Date('.$date.')"},{"v": null},{"v": null},{"v": null},{"v": null},{"v": null}]}
            ] 
}

Данные отображаются либопо неделям или месяцам (null для удобства чтения), например, за эту неделю:

2012, 02, 06
2012, 02, 07
2012, 02, 09 

Данные не установлены для каждодневной недели, поэтому в этом примере показаны только даты выше.То, что я хотел бы показать, это начало недели (2012, 02, 06) до конца недели (2012, 02, 12), аналогично третьему примеру здесь .

Мне удалось показать всю неделю, проверив, существует ли дата в базе данных, и если не добавить дополнительную строку, данные будут нулевыми, однако это означало, что строка не была непрерывной, а даты были не в порядке.

Может ли кто-нибудь дать совет, как мне поступить?

Спасибо!

Ответы [ 3 ]

4 голосов
/ 17 февраля 2012

Вы пытались оставить пропущенные даты пропущенными (т.е., чтобы база данных возвращала 2 значения вместо 7)?

Непрерывная ось должна обрабатывать пропущенные даты, вам просто нужно установить ось диапазон от начала до конца недели.

ОБНОВЛЕНИЕ

для интерактивный линейный график диапазоны осей могут быть установлены следующим образом (по мотивам этой темы ):

hAxis: {...
        viewWindowMode: 'explicit',
        viewWindow: {min: new Date(2007,1,1),
                     max: new Date(2010,1,1)}
        ...}

см. http://jsfiddle.net/REgJu/

1 голос
/ 12 февраля 2012

«Мне удалось получить показ всей недели, проверив, существует ли дата в базе данных, и если не добавить дополнительную строку, данные будут нулевыми, однако это означало, что строка не была непрерывной, а даты были не в порядке».

Я думаю, что вы на правильном пути, вам просто нужно сделать это немного по-другому. У меня есть функция, подобная ниже, чтобы сделать данные непрерывными.

$data = array(
    1 => 50,
    2 => 75,
    4 => 65,
    7 => 60,
);
$dayAgoStart = 1;
$daysAgoEnd = 14;

$continuousData = array();

for($daysAgo=$daysAgoStart ; $daysAgo<=$daysAgoEnd ; $daysAgo++){
    if(array_key_exists($daysAgo, $data) == true){
        $continuousData[$daysAgo] = $data[$daysAgo];
    }
    else{
        $continuousData[$daysAgo] = 0;
    }
}

ContinuousData теперь будет содержать:

$data = array(
    1 => 50,
    2 => 75,
    3 => 0,
    4 => 65,
    5 => 0,
    6 => 0,
    7 => 60,
    8 => 0,
    9 => 0,
    10 => 0,
    11 => 0,
    12 => 0,
    13 => 0,
    14 => 0,
);

в таком порядке, а затем данные могут быть использованы в диаграммах без каких-либо пробелов.

0 голосов
/ 10 февраля 2012

Возможно, вы можете использовать другой тип диаграммы ?Диаграммы выглядят так, как будто они могут быть полезны.

В противном случае вам может потребоваться написать собственный тип диаграммы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...