Csvgraph est conçu pour permettre une visualisation rapide de graphiques de fichiers CSV potentiellement très volumineux (Go) (à titre de comparaison, la plupart des feuilles de calcul sont limitées à 1 048 576 lignes). Csvgraph n'a pas de limites intégrées, mais en fin de compte, il est limité par votre RAM disponible (la version 32 bits utilisera jusqu'à 4 Go de RAM si elle est disponible, tandis que la version 64 bits utilisera toute la RAM disponible et la mémoire virtuelle). mémoire). Même avec des fichiers extrêmement volumineux, la lecture est rapide et le zoom est normalement instantané.
Ces fichiers CSV sont supposés avoir des en-têtes de colonne sur leur première ligne, donc un fichier CSV typique commencerait :
"Temps (sec)", Col-2, "Col-3", "Col-4", "Col-5"
99950,20,0,20,20
99950.1,10,1,11,12
Les valeurs sont lues sous forme de nombres à virgule flottante et sont donc limitées aux nombres compris entre +/-3,4e+38 et le plus petit nombre non nul est d'environ 1,4e-45, avec environ 7 chiffres significatifs.
En plus des simples tracés des données dans des fichiers CSV, les données peuvent être filtrées de différentes manières (y compris des filtres médians, des ajustements polynomiaux et des FFT) ainsi que calculées à partir des données CSV (par exemple, la différence absolue entre les données en 2 les colonnes du fichier csv peuvent facilement être tracées (par exemple "abs($3-$4)" tracera la différence absolue entre les colonnes 3 et 4).
Le fichier csvgraph.pdf contient le manuel complet et un certain nombre d'exemples de son utilisation.
1v0 - 1ère version de GitHub
1v1 - 01/06/2021 - problème potentiel résolu avec le composant DC de FFT. Ajout du menu/aide/manuel. Manuel mis à jour.
1v2 – 24/1/2021 – correction de bug – « inf » dans le fichier csv serait lu comme un nombre extrêmement grand (infini), ce qui provoquait ensuite des problèmes lorsque csvgraph essayait de mettre à l'échelle les nombres et de dessiner le graphique. Ajout de nombreuses autres options de « filtrage », notamment exponentiel, puissance, hyperbolique et sqrt.
1v3 – 02/03/2021 - ajout d'options d'ajustement de courbe supplémentaires, y=mx, y=mx+c avec GMR , erreur absolue minimale et erreur relative minimale, et y=a x+b sqrt(x)+c.
2v0 – 17/2/2021 – Modifications internes majeures pour réduire l’utilisation de la RAM et améliorer la vitesse. Aucun changement dans la fonction.
2v1 – 21/3/2021 – plus d’options d’ajustement de courbe ajoutées ; y=a+b sqrt(x)+c x+d*x^1,5, y=(a+bx)/(1+cx), y=(a+bx+cx^2)/(1+dx+ ex^2), polynômes sur sqrt(x) d'un ordre défini par l'utilisateur et fonctions rationnelles (polynôme/polynôme) selon un ordre défini par l'utilisateur.
2v2 - 5/4/2021 - $T1 à Tn autorisé dans les expressions pour utiliser les valeurs des traces existantes sur le graphique. Les traces sont numérotées à partir de 1. Les numéros de trace invalides (trop grands) renvoient 0. L'utilisateur peut maintenant définir l'ordre du filtre linéaire. Ceci est implémenté sous la forme d'un filtre Butterworth d'ordre n (10*ordre dB/décennie). Order=0 ne donne aucun filtrage. Order =1 donne le même filtrage que précédemment. "Filtres" pour les intégrales et les dérivées ajoutées. Tous les filtres rapportent désormais la progression en % (auparavant, l'erreur absolue min. et l'erreur relative min. ne rapportaient pas la progression et elles peuvent être assez lentes). Option permettant de sauter N lignes avant l'en-tête csv ajoutée pour les cas où l'en-tête csv ne figure pas sur la 1ère ligne du fichier Ajout de numéros de colonne aux zones de liste des colonnes X et Y pour faciliter la sélection des colonnes lorsque les noms ne sont pas très descriptifs (ou manquants). ).
2v3 - 23-1-2022 ajouté l'ajustement de courbe y=m x log(x)+c. Fonctions de tri et de médiane améliorées pour les rendre plus rapides - le tri utilisera tous les processeurs disponibles pour améliorer sa vitesse d'exécution.
2v4 - Correction d'un bug du 3-2-2022, utilisant les variables $Tn dans une expression avec un ensemble de valeurs d'axe x qui étaient
pas dans un ordre numérique croissant (et devait donc être trié) ne fonctionnait pas correctement en 2v2 et 2v3 – désolé.
2v5 - 16-2-2022 Meilleur rapport sur les lignes invalides dans les fichiers csv. Lors de la lecture des temps, le démarrage à zéro est facultatif.
2v6 – 27/2/2022 – Filtre Median1 amélioré, pour <=10 000 points de données, il est désormais exact et c'est (beaucoup) plus pour des traces précises avec un plus grand nombre de points de données. La position des légendes des traces a été déplacée vers la gauche afin que davantage de texte soit visible.
2v7 – 22/3/2022 - imprime une fréquence de -3 dB pour le filtre linéaire. Afficher à l'utilisateur 1 exemple de chaque type d'erreur dans le fichier csv. Si des dates sont présentes sur certaines lignes du fichier csv, signalez les lignes sans date comme une erreur potentielle lorsque la colonne x est définie sur l'heure. Nouvel algorithme de médiane (exacte) (filtre médian récursif), qui revient à l'échantillonnage si le temps d'exécution devient long. Médiane et Médiane 1 renommés filtre médian récursif et filtre médian standard.
2v8 - 23/5/2022 – possibilité supplémentaire de lire une date et une heure car la valeur x csvsave a ajouté le % terminé et (de manière significative) accéléré l'écriture dans le fichier. csvsave interpole si nécessaire afin que les valeurs x n'aient pas besoin d'être identiques sur toutes les traces.
2v9 – 7/6/2022 – correction de bug – si le décalage x n'est pas égal à 0 et que plusieurs traces ajoutées, un décalage x incorrect a été appliqué à la 2ème trace ajoutée à partir de là. Résolution interne plus élevée sur la lecture des dates et des heures, donc si « heure de départ à partir de zéro » est cochée, les résultats peuvent être légèrement plus précis.
3v0 – 15/8/22 – Jamais sorti – 1ère version 64 bits
3v1 – 17/8/22 – Jamais sorti. Code source refactorisé avec des « fichiers communs » (pouvant être utilisés dans d’autres programmes) séparés. Certains fichiers sont passés du C++ au C où ils étaient du C pur et le compilateur C++ a généré de nombreux avertissements.
3v2 – 14/9/2022 – 1ère version 64 bits. La version 64 bits utilisera toute la mémoire disponible, tandis que la version 32 bits est limitée à 4 Go de RAM, à part que la fonctionnalité est identique. La version 64 bits peut lire des fichiers de plus de 2 ^ 32 lignes, la version 32 bits manquera de RAM avant que ce nombre de lignes puisse être lu.
Modifications mineures : lorsque le menu Balances était invoqué plusieurs fois auparavant, la mise à l'échelle changeait très légèrement – corrigé. La plage autorisée de tailles de police pour le titre principal et les titres des axes X/Y a été étendue. FFT utilise désormais plusieurs cœurs de processeur s'ils sont présents pour fournir des résultats plus rapides.
3v3 - 26/9/2022 - modifications apportées à la version 64 bits pour permettre le chargement de fichiers encore plus volumineux (en utilisant la mémoire virtuelle ainsi que la RAM)
3v4 - 1-10-2022 - problème de gestion des dpi résolu lorsque plusieurs moniteurs sont utilisés sur la version 64 bits.
3v5 – 11/06/2022 – sur un clic droit de la souris lorsqu'une ligne est sélectionnée alors la pente de cette ligne (dy/dx) est donnée ainsi que les coordonnées des deux extrémités de la ligne. Un nom de fichier peut être donné sur la ligne de commande (sur les versions antérieures, cela ne fonctionnait pas pour la version 64 bits). Une expression contenant une fonction est désormais autorisée pour l'axe y (par exemple max($2,0) ).
3v6 06/03/2023 – Les en-têtes de colonne longs entraînent désormais l'ajout automatique d'une barre de défilement aux zones de liste X et Y afin qu'elles soient entièrement visibles. Enregistrez la plage x à l'écran au format CSV ajouté au menu Fichier. Option (case à cocher) ajoutée pour ajouter le nom de base du nom de fichier aux légendes des traces sur le graphique, ce qui est utile si la même colonne est lue à partir de plusieurs fichiers. Titre de l’axe Y ajouté automatiquement sauf si l’utilisateur en spécifie un (en fonction de l’en-tête de colonne de la 1ère trace ajoutée). Ajout d'une option pour charger X en tant que Valeur/60 (sec->min), Val/3600 (sec->hrs), val/86400 (sec->days). La gestion des erreurs pour les valeurs X dans un format date/heure défini par l'utilisateur a été améliorée et les espaces de fin sont désormais autorisés.
3v7 10/6/2023 – Case à cocher « Afficher les légendes » ajoutée. Changé pour utiliser le compilateur Builder C++ 11.3. Le titre est désormais centré au-dessus du graphique. Modifications mineures des tailles, des polices, etc. dans csvgraph.
3v8 4/7/2023 csvsave où la 2ème trace avait moins de points que la 1ère trace provoquait une erreur - corrigée.
3v9 26/2/2024
Peut maintenant ouvrir un fichier qu'Excel a déjà ouvert (et les messages d'erreur sont meilleurs en cas d'échec de l'ouverture des fichiers). Meilleur piégeage de l'utilisateur appuyant sur un bouton « commande » alors qu'une commande précédente est toujours en cours d'exécution. Le dérivé utilise désormais l'algorithme Savitzky Golay à 17 points avec l'ordre spécifié par l'utilisateur (1-> 10 est réellement utilisé, peut être défini sur 1-> l'infini par l'utilisateur). Lissage Savitzky Golay ajouté comme option de filtrage (25 points, avec l'ordre spécifié par l'utilisateur, 1->10 est réellement utilisé, peut être défini 1->infini par l'utilisateur). Ajout de la deuxième dérivée (d2y/d2x) à la liste des filtres qui utilisent un algorithme Savitzky Golay à 25 points avec l'ordre spécifié par l'utilisateur (1->10 est réellement utilisé, peut être défini sur 1->infini par l'utilisateur). Si un nombre manque dans une colonne référencée dans une expression, il sera défini sur nan. Ajout de la constante "nan" pour les expressions. Si une expression est évaluée à nan, la ligne est ignorée, cela peut donc être un moyen puissant de sélectionner les points à afficher par csvgraph. Ajout de "variables" x et ligne aux expressions. x est la valeur x actuelle et line est le numéro de ligne actuel. Gestionnaire d'expression mis à jour pour que nan==nan et nan!=nan fonctionnent comme prévu dans les expressions.
3v10 6/4/2024 Filtre spline de lissage ajouté.
4v0 3/7/2024 Csvgraph fonctionne désormais avec le texte Unicode (uft-8) afin que tous les caractères puissent être utilisés. Cela signifie qu'un fichier csv codé en uft-8 sera correctement lu et sa BOM (Byte Order Mark), si elle est présente, correctement traitée. Les en-têtes de colonnes, les titres principaux et les titres d'axes peuvent tous inclure des caractères utf8. Utf-8 est rétrocompatible avec l'ASCII 7 bits, les fichiers csv « conventionnels » doivent donc être traités exactement comme avant. Lors de l'enregistrement d'un fichier csv, vous avez la possibilité de préciser que le fichier est créé avec une nomenclature. Les noms de fichiers et les chemins d'accès aux fichiers peuvent également contenir des caractères Unicode (utf-8). Notez que l'enregistrement d'un fichier CSV avec les versions récentes d'Excel crée un fichier csv au format utf-8 avec une nomenclature, et une nomenclature est requise pour qu'Excel reconnaisse le fichier csv si vous essayez de l'ouvrir. Autres changements : • Les images d'écran peuvent être enregistrées aux formats BMP, jpg, png, gif, tiff et wdg. • ? l'opérateur peut être utilisé librement dans les expressions, par exemple ($1==0?0:1) est désormais accepté comme expression valide (auparavant, il ne fonctionnait qu'avec les crochets supprimés) • pour la régression dans les polynômes de sqrt(x), les points avec des valeurs négatives x sont désormais ignorés. • Autorisé X ainsi que x dans les expressions (utile pour couper et coller des équations [par exemple à partir d'un ajustement de courbe] peut utiliser X)
Cvsgraph est un programme portable qui ne nécessite aucune installation.
Copiez le fichier csvgraph32.exe ou csvgraph64.exe vers n'importe quel emplacement de votre ordinateur (ou exécutez-le à partir d'une clé USB ou similaire). Ajoutez csvgraph.pdf au même répertoire pour permettre l'accès au manuel depuis csvgraph (menu aide/manuel).
Un raccourci sur votre bureau facilite l'exécution de csvgraph.
Voir le fichier LICENCE pour plus de détails, mais csvgraph est gratuit pour une utilisation commerciale et non commerciale.
csvgraph fonctionne sous Windows (10 32 ou 64 bits). Il devrait fonctionner sur des versions antérieures (vers Vista) ou sous Wine sous Linux mais cela n'a pas été testé.
À partir de la version 3v7, le code source a été compilé avec Embarcadero® C++Builder 11.3 - un fichier de projet approprié est inclus dans l'archive. Il doit être compilé sans erreur ni avertissement. Il devrait être facile de passer à une version plus récente de C++Builder (au moins pour une cible Windows 32/64 bits), mais il ne serait pas non plus très difficile de revenir à des versions antérieures (retour à Builder C++ V5) si nécessaire.
De nombreuses parties du code source pourraient être intéressantes si vous n'utilisez pas C++Builder - par exemple atof.c fait partie de ya-sprintf voir https://github.com/pj-miller/ya-sprintf
expr-code.c contient de nombreuses routines généralement utiles - y compris un évaluateur d'expression général rapide pour les expressions stockées dans des chaînes.
UScientificGraph.cpp contient une implémentation efficace de filtre médian et une implémentation d'ajustement polynomial qui fonctionnent toutes deux bien avec un très grand nombre de points de données et leurs implémentations sont considérées comme nouvelles. Il contient également un algorithme de découpage de ligne rapide qui permet un zoom avant/arrière « infini ».