algorithm - valores - ¿Cómo puedo calcular automáticamente la escala del eje y los intervalos?
modificar eje horizontal excel (2)
El intervalo de tic va a depender de su área de visualización. Deberá tomar en cuenta el ancho de su gráfico (supongo que el tiempo está en el eje X) y el ancho de una cadena de fecha en la fuente seleccionada para obtener una buena escala.
El algoritmo básico será algo como esto.
- Escanee la lista de fechas para encontrar los valores mínimo y máximo.
- Divida el ancho del gráfico por el ancho de la cadena de fecha (esto se puede hacer una vez con el resultado almacenado en una variable si los anchos * both * son constantes). Este paso será más fácil si usa una fuente de ancho fijo y un formato de fecha MM-DD-YYYY. Si usa una fuente de ancho variable y un formato de fecha en el que deletrea el nombre del mes, deberá agregar un relleno adicional a la cadena para asegurarse de que cada cadena de fecha tenga el mismo ancho. Tenga en cuenta que dije relleno * extra *. Incluso si usa un formato de fecha fijo, querrá rellenarlo con al menos un espacio para evitar la aglomeración. Llamaré a este valor `ticks` porque es exactamente la cantidad de tics en su eje que se ajustará en función del ancho de su gráfico.
- Calcule cuántos días hay entre sus fechas mínima y máxima (inclusive). Cómo lo hará dependerá del idioma que esté utilizando. Es de esperar que tengas buenas implementaciones de fecha y calendario para recurrir. Llamaré a este valor `days`.
- Calcule el intervalo de marcación con la fórmula `interval = days / (ticks - 1)`.
- Determine qué días caen en intervalos de marcación agregando "intervalo" a su fecha mínima hasta llegar a su fecha máxima. Nuevamente, esto dependerá del idioma que use.
¿Alguien sabe dónde puedo encontrar un algoritmo que, dado un conjunto de valores (fechas) para un eje, pueda calcular una escala razonable y un intervalo de marcación?
He estado usando la biblioteca de gráficos jQuery flot . Es de código abierto y hace bastante bien la generación de ejes / tics. Sugeriría mirar su código y pellizcar algunas ideas desde allí.