У меня есть набор данных со 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
...
И полученный график в настоящее время выглядит следующим образом:
alt text http://www.ulmanen.fi/stuff/graph-sample.png
Можете ли вы сказать, почему использование max в каждом 200-битном ящике не работает? Как сделать прокручиваемый или масштабируемый граф (т. Е. Не показывать все сразу)? Кроме того, являются ли данные статичными или более или менее статическими, поэтому может быть возможность препроцессить его в базе данных? –
@martin clayton, потому что я хочу также учитывать «мин» шипы, используя max, уничтожил бы их. В сущности, мне нужен метод, чтобы найти самый важный момент в куске из 200 пунктов. –
Если ваше разрешение не может отображать мелкие детали ваших данных, ваше разрешение слишком мало. – Svante