Csvgraph está diseñado para permitir una visualización rápida de gráficos de archivos csv potencialmente muy grandes (GB) (a modo de comparación, la mayoría de las hojas de cálculo están limitadas a 1.048.576 filas). Csvgraph no tiene límites incorporados, pero en última instancia está limitado por la RAM disponible (la versión de 32 bits usará hasta 4 GB de RAM si está disponible, mientras que la versión de 64 bits usará toda la RAM disponible y virtual). memoria). Incluso con archivos extremadamente grandes, la lectura es rápida y el zoom es normalmente instantáneo.
Se supone que estos archivos csv tienen encabezados de columna en su primera línea, por lo que un archivo csv típico comenzaría:
"Tiempo(seg)","Col-2","Col-3","Col-4","Col-5"
99950,20,0,20,20
99950.1,10,1,11,12
Los valores se leen como números de punto flotante, por lo que están restringidos a números entre +/-3,4e+38 y el número más pequeño distinto de cero es aproximadamente 1,4e-45, con aproximadamente 7 dígitos significativos.
Además de los gráficos simples de los datos en archivos csv, los datos se pueden filtrar de diferentes maneras (incluidos filtros de mediana, ajustes polinomiales y FFT), así como también calcularse a partir de los datos csv (por ejemplo, la diferencia absoluta entre los datos en 2 Las columnas del archivo csv se pueden trazar fácilmente (por ejemplo, "abs($3-$4)" trazará la diferencia absoluta entre las columnas 3 y 4).
El archivo csvgraph.pdf contiene el manual completo y varios ejemplos de su uso.
1v0 - 1er lanzamiento de github
1v1 - 1/6/2021: se solucionó un posible problema con el componente DC de FFT. Menú/Ayuda/Manual agregado. Manual actualizado.
1v2 – 24/1/2021 – corrección de errores: “inf” en el archivo csv se leía como un número extremadamente grande (infinito), lo que luego causaba problemas cuando csvgraph intentaba escalar números y dibujar el gráfico. Se agregaron muchas más opciones para "filtrar", incluidas exponencial, potencia, hiperbólica y sqrt.
1v3 – 2/3/2021: se agregaron más opciones de ajuste de curvas, y=mx, y=mx+c con GMR, error absoluto mínimo y error relativo mínimo, y y=a x+b sqrt(x)+c.
2v0 – 2/17/2021 – Cambios internos importantes para reducir el uso de RAM y mejorar la velocidad. No hay cambios para funcionar.
2v1 – 21/3/2021 – se agregaron más opciones de ajuste de curvas; y=a+b raíz cuadrada(x)+c x+d*x^1.5, y=(a+bx)/(1+cx), y=(a+bx+cx^2)/(1+dx+ ex^2), polinomios en sqrt(x) de orden definido por el usuario y funciones racionales (polinomio/polinomio) en un orden definido por el usuario.
2v2 - 4/5/2021 - Se permite que $T1 a Tn en expresiones utilicen valores de trazas existentes en el gráfico. Las trazas se numeran desde 1. Los números de traza no válidos (demasiado grandes) devuelven 0. El usuario ahora puede establecer el orden del filtro lineal. Esto se implementa como un filtro Butterworth de orden n (10*orden dB/década). Order=0 no proporciona filtrado. Orden =1 proporciona el mismo filtrado que antes. Se agregaron "filtros" para integrales y derivados. Todos los filtros ahora informan el progreso como % (anteriormente, el error mínimo absoluto y el error mínimo relativo no informaban el progreso y pueden ser bastante lentos). Se agregó la opción para omitir N líneas antes del encabezado CSV para los casos en los que el encabezado CSV no está en la primera fila del archivo. Se agregaron números de columna a los cuadros de lista de las columnas X e Y para facilitar la selección de columnas cuando los nombres no son muy descriptivos (o faltan). ).
2v3 - 23-1-2022 se agregó ajuste de curva y=m x log(x)+c. Se mejoraron las funciones de clasificación y mediana para hacerlas más rápidas: la clasificación utilizará todos los procesadores disponibles para mejorar su velocidad de ejecución.
2v4: corrección de errores del 3-2-2022, usando variables $Tn en una expresión con un conjunto de valores del eje x que eran
no en orden numéricamente creciente (por lo que era necesario ordenarlo) no funcionó correctamente en 2v2 y 2v3; lo siento.
2v5 - 16-2-2022 Mejores informes de líneas no válidas en archivos csv. Al leer los tiempos, comenzar en el tiempo cero es opcional.
2v6 – 27/2/2022 – Se mejoró el filtro Mediana1, para <= 10,000 puntos de datos ahora es exacto y es (mucho) más para seguimientos precisos con una mayor cantidad de puntos de datos. La posición de las leyendas de seguimiento se movió hacia la izquierda para que se pueda ver más texto.
2v7 – 22/3/2022 - imprime una frecuencia de -3dB para filtro lineal. Muestra al usuario 1 ejemplo de cada tipo de error en el archivo csv. Si hay fechas presentes en algunas líneas del archivo csv, marque las líneas sin fecha como un posible error cuando la columna x esté configurada como hora. Nuevo algoritmo de mediana (exacta) (filtro de mediana recursivo), que recurre al muestreo si el tiempo de ejecución se vuelve largo. Mediana y Mediana 1 renombradas como filtro de mediana recursivo y filtro de mediana estándar.
2v8 - 23/5/2022: se agregó la capacidad de leer una fecha y hora a medida que el valor x csvsave agregó% completo y (significativamente) aceleró la escritura en el archivo. csvsave interpola si es necesario, por lo que no es necesario que los valores de x sean idénticos en todos los seguimientos.
2v9 – 6/7/2022 – corrección de errores: si el desplazamiento x no es igual a 0 y se agregaron varios seguimientos, se aplicó un desplazamiento x incorrecto al segundo seguimiento agregado en adelante. Mayor resolución interna en la lectura de fechas y horas, por lo que si se marca "hora de inicio desde cero", los resultados pueden ser un poco más precisos.
3v0 – 8/15/22 - Nunca lanzado – Primera versión de 64 bits
3v1 - 17/8/22 - Nunca lanzado. Código fuente refactorizado con “archivos comunes” (que pueden usarse en otros programas) separados. Algunos archivos se movieron de C++ a C, donde eran C puro y el compilador de C++ generó muchas advertencias.
3v2 – 9/14/2022 – Primera versión de 64 bits. La versión de 64 bits utilizará toda la memoria disponible, mientras que la versión de 32 bits está limitada a 4 GB de RAM, aparte de que la funcionalidad es idéntica. La versión de 64 bits puede leer archivos con más de 2^32 líneas, la versión de 32 bits se quedará sin RAM antes de que se puedan leer tantas líneas.
Cambios menores: cuando el menú Escalas se invocaba varias veces anteriormente, la escala cambiaba muy ligeramente: arreglado. Se amplió el rango permitido de tamaños de fuente para el título principal y los títulos de los ejes X/Y. FFT ahora utiliza múltiples núcleos de procesador si están presentes para ofrecer resultados más rápidos.
3v3 - 26/9/2022 - cambios a la versión de 64 bits para permitir cargar archivos aún más grandes (usando memoria virtual además de RAM)
3v4 - 10/01/2022: se solucionó el problema de manejo de ppp cuando se usaban varios monitores en la versión de 64 bits.
3v5 – 11/6/2022 – al hacer clic con el botón derecho del mouse cuando se selecciona una línea, se proporciona la pendiente de esta línea (dy/dx), así como las coordenadas de ambos extremos de la línea. Se puede proporcionar un nombre de archivo en la línea de comando (en versiones anteriores esto no funcionaba para la versión de 64 bits). Ahora se permite una expresión que contenga una función para el eje y (por ejemplo, max($2,0)).
3v6 6/03/2023: los encabezados de columna largos ahora hacen que se agregue automáticamente una barra de desplazamiento a los cuadros de lista X e Y para que se puedan ver en su totalidad. Guarde el rango x en la pantalla como CSV agregado al menú Archivo. Opción (casilla de verificación) agregada para agregar el nombre base del nombre de archivo a las leyendas de los rastros en el gráfico, lo cual es útil si la misma columna se lee desde varios archivos. El título del eje Y se agrega automáticamente a menos que el usuario especifique uno (según el encabezado de la columna del primer trazo agregado). Se agregó la opción para cargar X como Valor/60 (seg->min), Val/3600 (seg->hrs), val/86400 (seg->días). Se mejoró el manejo de errores para valores X en un formato de fecha/hora definido por el usuario y ahora se permiten espacios en blanco al final.
3v7 6/10/2023: se agregó la casilla de verificación “Mostrar leyendas”. Se cambió para usar el compilador Builder C++ 11.3. El título ahora está centrado sobre el gráfico. Cambios menores en tamaños, fuentes, etc. en csvgraph.
3v8 7/4/2023 csvsave donde el segundo seguimiento tenía menos puntos que el primer seguimiento provocó un error: solucionado.
3v9 26/2/2024
Ahora puede abrir un archivo que Excel ya tiene abierto (y los mensajes de error son mejores si no se pueden abrir los archivos). Mejor captura del usuario que presiona un botón de "comando" mientras aún se está ejecutando un comando anterior. El derivado ahora usa el algoritmo Savitzky Golay de 17 puntos con un orden especificado por el usuario (en realidad se usa 1->10, el usuario puede configurarlo en 1->infinito). Se agregó el suavizado Savitzky Golay como una opción de filtrado (25 puntos, con el orden especificado por el usuario, en realidad se usa 1->10, el usuario puede configurar 1->infinito). Se agregó la segunda derivada (d2y/d2x) a la lista de filtros que utiliza un algoritmo Savitzky Golay de 25 puntos con un orden especificado por el usuario (en realidad se usa 1->10, el usuario puede configurar 1->infinito). Si falta un número en una columna a la que se hace referencia en una expresión, se establecerá en nan. Se agregó la constante "nan" para las expresiones. Si una expresión se evalúa como nan, la línea se omite, por lo que esta puede ser una forma poderosa de seleccionar puntos para que se muestren en csvgraph. Se agregaron "variables" x y línea a las expresiones. x es el valor x actual y la línea es el número de línea actual. Controlador de expresiones actualizado para que nan==nan y nan!=nan funcionen como se esperaba en las expresiones.
3v10 4/6/2024 Se agregó un filtro spline de suavizado.
4v0 7/03/2024 Csvgraph ahora funciona con texto Unicode (uft-8), por lo que se puede utilizar cualquier carácter. Eso significa que un archivo csv codificado en uft-8 se leerá correctamente y su BOM (marca de orden de bytes), si está presente, se procesará correctamente. Los encabezados de columna, los títulos principales y los títulos de los ejes pueden incluir caracteres utf8. Utf-8 es compatible con versiones anteriores de ASCII de 7 bits, por lo que los archivos csv "convencionales" deben procesarse exactamente como antes. Al guardar un archivo csv, tiene la opción de especificar que el archivo se cree con una lista de materiales. Los nombres de archivos y las rutas a los archivos también pueden contener caracteres Unicode (utf-8). Tenga en cuenta que guardar un archivo CSV con versiones recientes de Excel crea un archivo csv en formato utf-8 con una lista de materiales, y se requiere una lista de materiales para que Excel reconozca el archivo csv si intenta abrirlo. Otros cambios: • Las imágenes de pantalla se pueden guardar en formato BMP, jpg, png, gif, tiff y wdg. • ? El operador se puede usar libremente en expresiones, por ejemplo ($1==0?0:1) ahora se acepta como una expresión válida (anteriormente solo funcionaba sin los corchetes) • para regresión en polinomios de sqrt(x), puntos con valores negativos x ahora se ignoran. • Se permite X y x en expresiones (útil para cortar y pegar ecuaciones [por ejemplo, de un ajuste de curva] puede usar X)
Cvsgraph es un programa portátil que no necesita instalación.
Copie el archivo csvgraph32.exe o csvgraph64.exe a cualquier ubicación de su computadora (o ejecútelo desde una memoria USB o similar). Agregue csvgraph.pdf al mismo directorio para permitir el acceso al manual desde csvgraph (menú ayuda/manual).
Un acceso directo en su escritorio simplifica la ejecución de csvgraph.
Consulte el archivo LICENCIA para obtener más detalles, pero csvgraph es gratuito para uso comercial y no comercial.
csvgraph se ejecuta en Windows (10 de 32 o 64 bits). Debería ejecutarse en versiones anteriores (hasta Vista) o en Wine en Linux, pero esto no se ha probado.
A partir de la versión 3v7, el código fuente se compiló con Embarcadero® C++Builder 11.3; en el archivo se incluye un archivo de proyecto adecuado. Debería compilarse sin errores ni advertencias. Debería ser fácil pasar a una versión más reciente de C++Builder (al menos para un objetivo Windows de 32/64 bits), pero igualmente no sería muy difícil volver a versiones anteriores (volver a Builder C++ V5) si necesario.
Muchas partes del código fuente podrían ser de interés si no usa C++Builder; por ejemplo, atof.c es parte de ya-sprintf, consulte https://github.com/pj-miller/ya-sprintf.
expr-code.c contiene muchas rutinas que generalmente son útiles, incluido un rápido evaluador de expresiones generales para expresiones almacenadas en cadenas.
UScientificGraph.cpp contiene una implementación eficiente de filtro de mediana y una implementación de ajuste polinómico, las cuales funcionan bien con una gran cantidad de puntos de datos y se cree que sus implementaciones son novedosas. También contiene un algoritmo de recorte de línea rápido que permite acercar y alejar "infinitamente".