Tengo un conjunto de datos con 100 000 puntos de datos que debo trazar en un gráfico. El gráfico resultante tendrá aproximadamente 500 px de ancho, por lo que para cada píxel habrá cerca de 200 puntos de datos, lo que parece bastante innecesario.Reducir los datos del gráfico sin perder la forma del gráfico
Necesito encontrar una manera de deshacerme de los puntos de datos excedentes sin perder la forma del gráfico para acelerar el renderizado. Actualmente, la renderización de los 100 000 puntos puede tomar más de 10 segundos ya que también estoy usando anti-aliasing y otros "efectos".
Intenté abordar este problema tomando cada punto de datos número 200 y trazándolos, pero esto da como resultado la pérdida de algunos de los puntos más significativos (piense en los picos en el gráfico que deseo poder mostrar). También pensé en dividir el conjunto de datos en fragmentos de 200 puntos de datos, y luego tomar el valor máximo de cada fragmento pero eso tampoco funcionaría.
¿Alguien conoce un método que se adapte a mis necesidades aquí? El lenguaje que estoy usando es PHP, el gráfico es creado por GD y los datos provienen de MySQL, por lo que las optimizaciones para algunos de ellos son bienvenidas.
Los datos están en este formato:
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
...
Y la gráfica resultante Actualmente tiene este aspecto:
alt text http://www.ulmanen.fi/stuff/graph-sample.png
¿Puede decir por qué no funciona el consumo máximo en cada contenedor de 200 puntos? ¿Qué hay de hacer el gráfico desplazable o con zoom (es decir, no mostrar todo de una vez)? Además, ¿los datos son estáticos, o más o menos estáticos, por lo que podría existir la posibilidad de preprocesarlos en la base de datos? –
@martin clayton, porque también quiero tener en cuenta los picos 'min', usar max los destruiría. En esencia, necesito un método para encontrar el punto más significativo en un trozo de 200 puntos. –
Si su resolución no puede mostrar los detalles de sus datos, entonces su resolución es demasiado pequeña. – Svante