У меня есть набор данных с 100 000 точек данных, которые я должен нанести на график. Результирующий график будет иметь ширину около 500 пикселей, поэтому для каждого пикселя будет около 200 точек данных, что кажется совершенно ненужным.
Мне нужно найти способ избавиться от лишних точек данных, не теряя форму графика, чтобы ускорить рендеринг. В настоящее время рендеринг всех 100 000 точек может занять более 10 секунд, так как я также использую сглаживание и другие «эффекты».
Я попытался подойти к этой проблеме, просто взяв каждую 200-ую точку данных и нанеся их на график, но это привело к тому, что некоторые из наиболее важных моментов были упущены (подумайте о скачках на графике, которые я хочу показать). Я также подумал о том, чтобы разбить набор данных на порции по 200 точек данных, а затем взять максимальное значение из каждого куска, но это тоже не сработает.
Кто-нибудь знает метод, который бы соответствовал моим потребностям здесь? Я использую язык PHP, граф создается GD, а данные поступают из MySQL, поэтому оптимизация некоторых из них приветствуется.
Данные в этом формате:
Datetime Value
2005-01-30 00:00:00 35.30
2005-01-30 01:00:00 35.65
2005-01-30 02:00:00 36.15
2005-01-30 03:00:00 35.95
...
И результирующий график в настоящее время выглядит так:
альтернативный текст http://www.ulmanen.fi/stuff/graph-sample.png