Csvgraph wurde entwickelt, um eine schnelle Anzeige von Diagrammen potenziell sehr großer (GB) CSV-Dateien zu ermöglichen (zum Vergleich: Die meisten Tabellenkalkulationen sind auf 1.048.576 Zeilen beschränkt). Csvgraph hat keine eingebauten Beschränkungen, aber letztendlich ist es durch Ihren verfügbaren RAM begrenzt (die 32-Bit-Version verwendet bis zu 4 GB RAM, sofern verfügbar, während die 64-Bit-Version den gesamten verfügbaren RAM und virtuellen Speicher nutzt Erinnerung). Selbst bei extrem großen Dateien erfolgt das Lesen schnell und das Zoomen erfolgt normalerweise augenblicklich.
Es wird davon ausgegangen, dass diese CSV-Dateien in der ersten Zeile Spaltenüberschriften enthalten, sodass eine typische CSV-Datei wie folgt beginnen würde:
„Zeit (Sek.)“, „Spalte-2“, „Spalte-3“, „Spalte-4“, „Spalte-5“
99950,20,0,20,20
99950.1,10,1,11,12
Die Werte werden als Gleitkommazahlen gelesen und sind daher auf Zahlen zwischen +/-3,4e+38 beschränkt. Die kleinste Zahl ungleich Null ist etwa 1,4e-45 mit etwa 7 signifikanten Ziffern.
Neben einfachen Diagrammen der Daten in CSV-Dateien können die Daten auf verschiedene Arten gefiltert (einschließlich Medianfilter, Polynomanpassungen und FFTs) sowie aus den CSV-Daten berechnet werden (z. B. die absolute Differenz zwischen den Daten in 2 Spalten der CSV-Datei können einfach dargestellt werden (z. B. „abs($3-$4)“ zeichnet die absolute Differenz zwischen den Spalten 3 und 4 auf).
Die Datei csvgraph.pdf enthält das vollständige Handbuch und eine Reihe von Anwendungsbeispielen.
1v0 – 1. Github-Veröffentlichung
1v1 – 01.06.2021 – potenzielles Problem mit der DC-Komponente von FFT behoben. Menü/Hilfe/Handbuch hinzugefügt. Aktualisiertes Handbuch.
1v2 – 24.01.2021 – Fehlerbehebung – „inf“ in der CSV-Datei wurde als extrem große Zahl (unendlich) gelesen, was dann zu Problemen führte, wenn csvgraph versuchte, Zahlen zu skalieren und das Diagramm zu zeichnen. Viele weitere Optionen zum „Filtern“ hinzugefügt, darunter Exponential, Potenz, Hyperbel und Quadrat.
1v3 – 02.03.2021 – Weitere Kurvenanpassungsoptionen hinzugefügt, y=mx, y=mx+c mit GMR, minimaler absoluter Fehler und minimaler relativer Fehler und y=a x+b sqrt(x)+c.
2v0 – 17.02.2021 – Wichtige interne Änderungen zur Reduzierung der RAM-Nutzung und Verbesserung der Geschwindigkeit. Keine Änderungen an der Funktion.
2v1 – 21.3.2021 – weitere Kurvenanpassungsoptionen hinzugefügt; 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), Polynome auf sqrt(x) mit benutzerdefinierter Ordnung und rationale Funktionen (Polynom/Polynom) mit benutzerdefinierter Ordnung.
2v2 – 04.05.2021 – $T1 bis Tn dürfen in Ausdrücken Werte aus vorhandenen Spuren im Diagramm verwenden. Spuren werden ab 1 nummeriert. Ungültige Spurennummern (zu groß) geben 0 zurück. Der Benutzer kann jetzt die Reihenfolge des linearen Filters festlegen. Dies ist als Butterworth-Filter n-ter Ordnung (10 dB/Dekade) implementiert. Order=0 gibt keine Filterung. Order =1 bietet die gleiche Filterung wie zuvor. „Filter“ für Integral und Ableitung hinzugefügt. Alle Filter melden jetzt den Fortschritt als % (zuvor meldeten der minimale ABS-Fehler und der minimale relative Fehler keinen Fortschritt und können recht langsam sein). Option zum Überspringen von N Zeilen vor dem hinzugefügten CSV-Header für Fälle, in denen sich der CSV-Header nicht in der ersten Zeile der Datei befindet. Spaltennummern zu den Listenfeldern X-Spalte und Y-Spalte hinzugefügt, um die Auswahl von Spalten zu erleichtern, wenn Namen nicht sehr aussagekräftig sind (oder fehlen). ).
2v3 – 23.01.2022 y=m x log(x)+c Kurvenanpassung hinzugefügt. Sortier- und Medianfunktionen wurden verbessert, um sie schneller zu machen – Sortieren nutzt alle verfügbaren Prozessoren, um die Ausführungsgeschwindigkeit zu verbessern.
2v4 – Fehlerbehebung vom 02.03.2022, Verwendung der Variablen $Tn in einem Ausdruck mit einer Reihe von x-Achsenwerten, die waren
nicht in numerisch aufsteigender Reihenfolge (und mussten daher sortiert werden) funktionierten in 2v2 und 2v3 nicht richtig – sorry.
2v5 – 16.2.2022 Bessere Meldung ungültiger Zeilen in CSV-Dateien. Beim Lesen von Zeiten ist der Beginn bei Null optional.
2v6 – 27.02.2022 – Median1-Filter verbessert, für <=10.000 Datenpunkte ist er jetzt genau und (viel) besser für genaue Kurven mit einer größeren Anzahl von Datenpunkten. Die Position der Spurlegenden wurde nach links verschoben, sodass mehr Text sichtbar ist.
2v7 – 22.3.2022 – druckt eine Frequenz von -3 dB für den linearen Filter. Zeigen Sie Benutzer 1 ein Beispiel für jeden Fehlertyp in der CSV-Datei an. Wenn in einigen Zeilen der CSV-Datei Datumsangaben vorhanden sind, kennzeichnen Sie Zeilen ohne Datum als potenziellen Fehler, wenn die x-Spalte auf Zeit eingestellt ist. Neuer (exakter) Median-Algorithmus (rekursiver Medianfilter), der auf die Stichprobenentnahme zurückgreift, wenn die Ausführungszeit zu lang wird. Median und Median 1 wurden in rekursiver Medianfilter und Standard-Medianfilter umbenannt.
2v8 – 23.5.2022 – Möglichkeit zum Lesen eines Datums und einer Uhrzeit als x-Wert hinzugefügt. csvsave fügte % abgeschlossen hinzu und beschleunigte das Schreiben in die Datei (erheblich). csvsave interpoliert bei Bedarf, sodass die x-Werte nicht auf allen Spuren identisch sein müssen.
2v9 – 06.07.2022 – Fehlerbehebung – wenn der x-Offset nicht gleich 0 ist und mehrere Spuren hinzugefügt wurden, wurde auf den zweiten hinzugefügten Trace ein falscher x-Offset angewendet. Intern höhere Auflösung beim Lesen von Datum und Uhrzeit. Wenn also „Startzeit bei Null“ aktiviert ist, sind die Ergebnisse möglicherweise etwas genauer.
3v0 – 15.08.22 – Nie veröffentlicht – 1. 64-Bit-Version
3v1 – 17.8.22 – Nie veröffentlicht. Quellcode überarbeitet, wobei „gemeinsame Dateien“ (die in anderen Programmen verwendet werden können) herausgetrennt wurden. Einige Dateien wurden von C++ nach C verschoben, wo sie reines C waren und der C++-Compiler viele Warnungen generierte.
3v2 – 14.9.2022 – 1. 64-Bit-Version. Die 64-Bit-Version nutzt den gesamten verfügbaren Speicher, während die 32-Bit-Version auf 4 GB RAM beschränkt ist, ansonsten ist die Funktionalität identisch. Die 64-Bit-Version kann Dateien mit mehr als 2^32 Zeilen lesen, der 32-Bit-Version geht der RAM aus, bevor so viele Zeilen gelesen werden können.
Kleinere Änderungen: Wenn das Menü „Skalen“ zuvor mehrmals aufgerufen wurde, änderte sich die Skalierung geringfügig – behoben. Zulässiger Schriftgrößenbereich für Haupttitel und X/Y-Achsentitel erweitert. FFT nutzt jetzt mehrere Prozessorkerne, sofern diese vorhanden sind, um schnellere Ergebnisse zu liefern.
3v3 – 26.9.2022 – Änderungen an der 64-Bit-Version, um das Laden noch größerer Dateien zu ermöglichen (unter Verwendung von virtuellem Speicher und RAM)
3v4 – 1.10.2022 – Problem mit der dpi-Verarbeitung behoben, wenn mehrere Monitore in der 64-Bit-Version verwendet werden.
3v5 – 11.06.2022 – Wenn Sie mit der rechten Maustaste klicken und eine Linie auswählen, werden die Steigung dieser Linie (dy/dx) sowie die Koordinaten beider Enden der Linie angezeigt. Auf der Befehlszeile kann ein Dateiname angegeben werden (bei früheren Versionen funktionierte dies für die 64-Bit-Version nicht). Für die y-Achse ist jetzt ein Ausdruck zulässig, der eine Funktion enthält (z. B. max($2,0) ).
3v6 06.03.2023 – Lange Spaltenüberschriften führen jetzt dazu, dass den X- und Y-Listenfeldern automatisch eine Bildlaufleiste hinzugefügt wird, damit sie vollständig sichtbar sind. X-Bereich auf dem Bildschirm als CSV speichern, hinzugefügt zum Dateimenü. Option (Kontrollkästchen) hinzugefügt, um den Basisnamen des Dateinamens zu Legenden von Spuren im Diagramm hinzuzufügen. Dies ist nützlich, wenn dieselbe Spalte aus mehreren Dateien gelesen wird. Der Titel der Y-Achse wird automatisch hinzugefügt, es sei denn, der Benutzer gibt einen an (basierend auf der Spaltenüberschrift der ersten hinzugefügten Spur). Option hinzugefügt, um X als Wert/60 (Sek->Min), Wert/3600 (Sek->Stunden), Wert/86400 (Sek->Tage) zu laden. Die Fehlerbehandlung für X-Werte in einem benutzerdefinierten Datums-/Uhrzeitformat wurde verbessert und nachgestellte Leerzeichen sind jetzt zulässig.
3v7 06.10.2023 – Kontrollkästchen „Legenden anzeigen“ hinzugefügt. Umgestellt auf die Verwendung des Builder C++ 11.3-Compilers. Der Titel ist jetzt zentriert über dem Diagramm. Kleinere Änderungen an Größen, Schriftarten usw. in csvgraph.
3v8 07.04.2023 csvsave, wo der 2. Trace weniger Punkte als der 1. Trace hatte, verursachte einen Fehler – behoben.
3v9 26.2.2024
Kann jetzt eine Datei öffnen, die Excel bereits geöffnet hat (und Fehlermeldungen sind besser, wenn Dateien nicht geöffnet werden können). Besseres Abfangen des Benutzers, der eine „Befehl“-Taste drückt, während ein vorheriger Befehl noch ausgeführt wird. Die Ableitung verwendet jetzt den 17-Punkte-Savitzky-Golay-Algorithmus mit benutzerdefinierter Reihenfolge (1->10 wird tatsächlich verwendet, kann vom Benutzer auf 1->unendlich eingestellt werden). Savitzky-Golay-Glättung als Filteroption hinzugefügt (25 Punkte, mit benutzerdefinierter Reihenfolge, 1->10 wird tatsächlich verwendet, kann vom Benutzer auf 1->unendlich eingestellt werden). Zweite Ableitung (d2y/d2x) zur Filterliste hinzugefügt, die einen 25-Punkte-Savitzky-Golay-Algorithmus mit benutzerdefinierter Reihenfolge verwendet (tatsächlich wird 1->10 verwendet, kann vom Benutzer auf 1->unendlich eingestellt werden). Wenn in einer Spalte, auf die in einem Ausdruck verwiesen wird, eine Zahl fehlt, wird diese auf nan gesetzt. Konstante „nan“ für Ausdrücke hinzugefügt. Wenn ein Ausdruck „nan“ ergibt, wird die Zeile übersprungen, sodass dies eine leistungsstarke Möglichkeit sein kann, Punkte auszuwählen, die im CSV-Diagramm angezeigt werden sollen. „Variablen“ x und Zeile zu Ausdrücken hinzugefügt. x ist der aktuelle x-Wert und line ist die aktuelle Zeilennummer. Der Ausdruckshandler wurde aktualisiert, sodass nan==nan und nan!=nan in Ausdrücken wie erwartet funktionieren.
3v10 04.06.2024 Glättungs-Spline-Filter hinzugefügt.
4v0 07.03.2024 Csvgraph funktioniert jetzt mit Unicode-Text (uft-8), sodass beliebige Zeichen verwendet werden können. Das bedeutet, dass eine CSV-Datei, die UFT-8-codiert ist, korrekt gelesen und ihre BOM (Byte Order Mark), sofern vorhanden, korrekt verarbeitet wird. Spaltenüberschriften, Haupttitel und Achsentitel können alle UTF8-Zeichen enthalten. Utf-8 ist abwärtskompatibel mit 7-Bit-ASCII, daher sollten „herkömmliche“ CSV-Dateien genauso verarbeitet werden wie zuvor. Beim Speichern einer CSV-Datei haben Sie die Möglichkeit anzugeben, dass die Datei mit einer Stückliste erstellt wird. Dateinamen und Dateipfade können auch Unicode-Zeichen (utf-8) enthalten. Beachten Sie, dass beim Speichern einer CSV-Datei mit neueren Versionen von Excel eine CSV-Datei im UTF-8-Format mit einer Stückliste erstellt wird und eine Stückliste erforderlich ist, damit Excel die CSV-Datei erkennt, wenn Sie versuchen, sie zu öffnen. Weitere Änderungen: • Bildschirmbilder können im BMP-, JPG-, PNG-, GIF-, TIFF- und WDG-Format gespeichert werden. • ? Der Operator kann frei in Ausdrücken verwendet werden, z. B. ($1==0?0:1) wird jetzt als gültiger Ausdruck akzeptiert (zuvor funktionierte er nur mit entfernten Klammern) • für Regression in Polynomen von sqrt(x), Punkte mit negativem Wert x werden jetzt ignoriert. • Erlaubt sind sowohl X als auch x in Ausdrücken (nützlich, da beim Ausschneiden und Einfügen von Gleichungen [z. B. aus einer Kurvenanpassung] X verwendet werden kann)
Cvsgraph ist ein portables Programm, das keiner Installation bedarf.
Kopieren Sie die Datei csvgraph32.exe oder csvgraph64.exe an einen beliebigen Speicherort auf Ihrem Computer (oder führen Sie sie von einem USB-Stick oder ähnlichem aus). Fügen Sie csvgraph.pdf demselben Verzeichnis hinzu, um den Zugriff auf das Handbuch aus csvgraph heraus zu ermöglichen (Menü Hilfe/Handbuch).
Eine Verknüpfung auf Ihrem Desktop erleichtert die Ausführung von csvgraph.
Weitere Informationen finden Sie in der Datei LIZENZ. csvgraph ist jedoch sowohl für die kommerzielle als auch für die nichtkommerzielle Nutzung kostenlos.
csvgraph läuft unter Windows (10 32 oder 64 Bit). Es sollte auf früheren Versionen (bis Vista) oder unter Wine unter Linux laufen, dies ist jedoch ungetestet.
Ab der 3v7-Version wurde der Quellcode mit Embarcadero® C++Builder 11.3 kompiliert – eine passende Projektdatei ist im Archiv enthalten. Es sollte ohne Fehler oder Warnungen kompiliert werden. Es sollte einfach sein, auf eine neuere Version von C++Builder umzusteigen (zumindest für ein 32/64-Bit-Windows-Ziel), aber es wäre auch nicht sehr schwierig, zu früheren Versionen (zurück zu Builder C++ V5) zurückzukehren, wenn notwendig.
Viele Teile des Quellcodes könnten von Interesse sein, wenn Sie C++Builder nicht verwenden – zum Beispiel ist atof.c Teil von ya-sprintf, siehe https://github.com/pj-miller/ya-sprintf
expr-code.c enthält viele Routinen, die allgemein nützlich sind – einschließlich einer schnellen allgemeinen Ausdrucksauswertung für in Zeichenfolgen gespeicherte Ausdrücke.
UScientificGraph.cpp enthält eine effiziente Medianfilter-Implementierung und eine Polynom-Fit-Implementierung, die beide gut mit einer sehr großen Anzahl von Datenpunkten funktionieren und deren Implementierungen als neuartig gelten. Es enthält außerdem einen schnellen Algorithmus zum Beschneiden von Linien, der ein „unendliches“ Vergrößern/Verkleinern ermöglicht.