Построение графиков на основе данных из файлов CSV
Задача - брать данные из постоянно обновляемого файла формата CSV и на основе этих данных строить графики.
Язык - PHP, исходный код, желательно с небольшими комментариями.
Платформа - Win+Apache(IIS)+PHP+MySQL.
Итак, теперь более подробно.
1) Есть папка, название папки нам всегда известно и заранее определенно. Пусть будет папка THD.
2) В папке появляются файлы вида - HidTEMPerHUM_2010Y7M27D15h16m31s.csv Дата и время в названии которых периодически изменяются.
3) Эти файлы содержат данные вида:
No. ,Date Time ,Temperature , Humidty , Dewpoint
1, 27/7/2010 15:16:31, 30.40C, 28.91, 10.33
2, 27/7/2010 15:16:47, 30.38C, 28.98, 10.35
3, 27/7/2010 15:16:52, 30.38C, 28.91, 10.31
4, 27/7/2010 15:16:57, 30.38C, 28.91, 10.31
5, 27/7/2010 15:17:02, 30.38C, 28.91, 10.31
6, 27/7/2010 15:17:07, 30.38C, 28.91, 10.31
7, 27/7/2010 15:17:12, 30.39C, 28.91, 10.32
8, 27/7/2010 15:17:17, 30.40C, 28.88, 10.31
9, 27/7/2010 15:17:22, 30.40C, 28.84, 10.29
10, 27/7/2010 15:17:27, 30.40C, 28.84, 10.29
4) На основе этих данных необходим график. Внешний вид графика указан во вложении.
График взят отсюда - http://pchart.sourceforge.net/documentation.php?topic=exemple2
Возможно лучшим вариантом будет эти данные сначала загонять с базу - Mysql.
Далее описываю параметры графика:
1) Ось абсцисс должна быть разделена на 24 отрезка(часа) от 0 до 24. Подписей более никаких не надо. Все цифры горизонтального написания (обычного).
2) Ось ординат должна быть динамической и ее значения должны меняться в зависимости от наших данных. Подписей более никаких не надо. Все цифры горизонтального написания (обычного).
20 делений, кратных 5-ти.
Например, от -20 до 75.
3) Всего необходимо строить 3 кривых по параметрам: Температура, Влажность, Точка росы.
Цвета не принципиальны. Пусть будут - Красный, Зеленый, Синий соответственно.
4) Нужна легенда из 3-х пунктов: Температура, Влажность, Точка росы. Можно по-английски, не принципиально.
5) Данных за 24 часа приблизительно может быть от 100 показателей до 1500.
6) Размер картинки графика, ширина - 1000рх. Высота - как получится.
Необходимо, чтобы на странице с графиком были кнопки для просмотра графиков(данных) за прошлые дни, недели, месяцы, годы.
При просмотре за 24 часа под графиком пишем - текущую дату. Слева от нее кнопку с датой предыдущего дня. Справа - пусто.
При клике по дате предыдущего дня. Показываем график за прошлый день. Под ним дату предыдущего дня. Слева от нее кнопка с (датой предыдущего дня)-1. Справа - (дата предыдущего дня)+1.
Т.е. таким образом можем уходить вглубь дат насколько это возможно. Когда доходим до самого последнего дня, то слева уже не показываем кнопку с датой предыдущего дня.
Формат даты: 30.07.2010
Еще немного ниже размещаем 4 ссылки, горизонтально. Можно использовать Radio-Button.
ДЕНЬ НЕДЕЛЯ МЕСЯЦ ГОД
При нажатии на неделю показываем график за неделю.
Ось абсцисс делим на 7 частей.
Внизу кнопки для навигации по неделям - 30 неделя 2010
Внизу кнопки для навигации по периодам.
При нажатии на месяц показываем график за месяц.
Ось абсцисс делим на 28(29), 30 или 31, в зависимости от месяца.
Внизу кнопки для навигации по месяцам - июль 2010
Внизу кнопки для навигации по периодам.
При нажатии на год показываем график за год.
Ось абсцисс делим на 12 частей.
Внизу кнопки для навигации по месяцам.
Внизу кнопки для навигации по периодам.
Пока есть один момент. Не очень понятно сколько точек брать из исходных данных чтобы строить графики
за неделю, месяц и год.
Возможно неплохим вариантом будет брать для недели каждую 5 точку.
Для месяца - 30-ую.
Для года - 160ую.
Надо посмотреть на готовые графики.
И еще один момент. Кеш. Графики, которые мы уже посмотрели(сгенерировали) нужно сохранять в файлах картинок.
И перегенерировать их только тогда, когда файла для нужного нам периода нет.
Срок исполнения - месяц.