Я пытаюсь отобразить данные на линейном графике с помощью графиков Google. Данные отображаются хорошо, однако я хотел бы установить диапазон дат для отображения.
Данные отправляются из базы данных в литеральном формате 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), аналогично третьему примеру здесь .
Мне удалось показать всю неделю, проверяя, существует ли дата в базе данных, и если не добавляет лишнюю строку, будут нулевые данные, это, однако, означало, что линия не была непрерывной и даты, когда они не в порядке.
Может ли кто-нибудь предложить какие-либо советы о том, как я могу это сделать?
Благодаря!
Не пытались ли вы оставить отсутствующие даты, чтобы отсутствовали даты (т. Е. Чтобы база данных возвращала 2 значения вместо 7)?
Непрерывная ось должна обрабатывать отсутствующие даты, вам просто нужно установить диапазон осей от начала до конца недели.
ОБНОВИТЬ
для интерактивной линейной диаграммы диапазоны осей могут быть установлены таким образом (как вдохновлено этой нитью ):
hAxis: {... viewWindowMode: 'explicit', viewWindow: {min: new Date(2007,1,1), max: new Date(2010,1,1)} ...}
«Мне удалось показать всю неделю, проверив, существует ли дата в базе данных, и если не добавляет лишнюю строку, будут нулевые данные, это, однако, означало, что линия не была непрерывной, а даты не в порядке».
Я думаю, что вы на правильном пути, вам просто нужно сделать это несколько иначе. У меня есть функция, как показано ниже, чтобы сделать данные непрерывными.
$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; } }
Теперь продолжится непрерывная дата:
$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, );
в этом порядке, а затем данные могут использоваться в диаграммах без каких-либо пробелов.
Возможно, вы можете использовать другой тип диаграммы ? Dygraphs выглядит так, как будто это может быть полезно.
В противном случае вам, возможно, придется написать собственный собственный тип диаграммы.