Csvgraph 旨在允许快速查看可能非常大 (GB) 的 csv 文件的图表(为了进行比较,大多数电子表格仅限于 1,048,576 行)。 Csvgraph 没有内置限制,但最终它受到可用 RAM 的限制(32 位版本将使用最多 4GB RAM(如果可用),而 64 位版本将使用所有可用 RAM 和虚拟内存记忆)。即使文件非常大,读取速度也很快,并且缩放通常是瞬时的。
假定这些 csv 文件的第一行有列标题,因此典型的 csv 文件将开始:
“时间(秒)”,“Col-2”,“Col-3”,“Col-4”,“Col-5”
99950,20,0,20,20
99950.1,10,1,11,12
值被读取为浮点数,因此仅限于 +/-3.4e+38 之间的数字,最小的非零数字约为 1.4e-45,具有大约 7 位有效数字。
除了 csv 文件中数据的简单绘图之外,还可以通过多种不同方式对数据进行过滤(包括中值滤波器、多项式拟合和 FFT),并根据 csv 数据进行计算(例如 2 中数据之间的绝对差)。可以轻松绘制 csv 文件的列(例如“abs($3-$4)”将绘制第 3 列和第 4 列之间的绝对差异)。
文件 csvgraph.pdf 包含完整的手册和一些使用示例。
1v0 - 第 1 个 github 版本
1v1 - 6/1/2021 - 修复了 FFT 直流分量的潜在问题。添加了菜单/帮助/手册。更新了手册。
1v2 – 24/1/2021 – 错误修复 – csv 文件中的“inf”将被读取为一个极大的数字(无穷大),这会在 csvgraph 尝试缩放数字并绘制图表时导致问题。添加了更多“过滤”选项,包括指数、幂、双曲和开方。
1v3 – 3/2/2021 - 添加了更多曲线拟合选项,y=mx、y=mx+c 与 GMR、最小绝对误差和最小相对误差,以及 y=a x+b sqrt(x)+c。
2v0 – 17/2/2021 – 主要内部更改,以减少 RAM 使用并提高速度。功能无变化。
2v1 – 21/3/2021 – 添加更多曲线拟合选项; 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)、用户定义阶数的 sqrt(x) 多项式和用户定义阶数的有理函数(多项式/多项式)。
2v2 - 5/4/2021 - $T1 到 Tn 允许在表达式中使用图表上现有轨迹的值。迹线从 1 开始编号。无效的迹线编号(太大)返回 0。用户现在可以设置线性滤波器的顺序。这是作为 n 阶巴特沃斯滤波器(10*阶 dB/十倍频)实现的。 Order=0 不进行过滤。 Order =1 提供与之前相同的过滤。添加了积分和导数的“过滤器”。现在,所有过滤器都以百分比形式报告进度(以前的最小绝对误差和最小相对误差不报告进度,而且速度可能相当慢)。对于 csv 标题不在文件第一行的情况,添加了在 csv 标题之前跳过 N 行的选项 将列号添加到 X 列和 Y 列列表框,以便在名称描述性不强(或缺失)时更轻松地选择列)。
2v3 - 2022 年 1 月 23 日添加了 y=m x log(x)+c 曲线拟合。排序和中值函数得到改进,使其速度更快 - 排序将使用所有可用的处理器来提高其执行速度。
2v4 - 2022 年 2 月 2 日错误修复,在表达式中使用变量 $Tn 以及一组 x 轴值
不是按数字递增顺序(因此需要排序)在 2v2 和 2v3 中无法正常工作 - 抱歉。
2v5 - 16-2-2022 更好地报告 csv 文件中的无效行。读取时间时,可选择从零时间开始。
2v6 – 27/2/2022 – Median1 过滤器得到改进,对于 <=10,000 个数据点,它现在是准确的,并且对于具有更多数据点的精确跟踪来说,它(更多)更加准确。迹线图例的位置向左移动,以便可以看到更多文本。
2v7 – 22/3/2022 - 打印线性滤波器的 -3dB 频率。向用户 1 显示 csv 文件中每种错误类型的示例。如果 csv 文件的某些行中存在日期,则当 x 列设置为时间时,会将没有日期的行标记为潜在错误。新的(精确)中值(递归中值滤波器)算法,如果执行时间变长,则会回退到采样。 Median 和 Median 1 更名为递归中值滤波器和标准中值滤波器。
2v8 - 23/5/2022 – 增加了读取日期和时间的能力,因为 x 值 csvsave 添加了完成百分比并(显着)加快了写入文件的速度。如果需要,csvsave 会进行插值,因此所有轨迹上的 x 值不需要相同。
2v9 – 2022 年 7 月 6 日 – 错误修复 – 如果 x 偏移量不等于 0 且添加的多条轨迹,则错误的 x 偏移量将应用于随后添加的第二条轨迹。读取日期和时间的内部分辨率更高,因此如果勾选“从零开始时间”,结果可能会稍微更准确。
3v0 – 15/8/22 - 从未发布 - 第一个 64 位版本
3v1 – 17/8/22 - 从未发布。重构的源代码与“公共文件”(可在其他程序中使用)分开。一些文件从 C++ 转移到 C,其中它们是纯 C,并且 C++ 编译器生成了很多警告。
3v2 – 2022 年 9 月 14 日 – 第一个 64 位版本。 64 位版本将使用所有可用内存,而 32 位版本仅限 4GB 内存,除此之外功能相同。 64 位版本可以读取超过 2^32 行的文件,32 位版本将在读取这么多行之前耗尽 RAM。
细微变化:当之前多次调用“缩放”菜单时,缩放会发生非常轻微的变化 - 已修复。扩大了主标题和 X/Y 轴标题允许的字体大小范围。 FFT 现在利用多个处理器内核(如果存在)来提供更快的结果。
3v3 - 26/9/2022 - 更改为 64 位版本以允许加载更大的文件(使用虚拟内存和 RAM)
3v4 - 1-10-2022 - 修复了在 64 位版本上使用多个显示器时的 dpi 处理问题。
3v5 – 6/11/2022 – 选择一条线时单击鼠标右键,即可给出该线的斜率 (dy/dx) 以及该线两端的坐标。可以在命令行上给出文件名(在早期版本中,这不适用于 64 位版本)。现在,y 轴允许使用包含函数的表达式(例如 max($2,0) )。
3v6 3/6/2023 – 长列标题现在会导致滚动条自动添加到 X 和 Y 列表框,以便可以完全看到它们。将屏幕上的 x 范围保存为 CSV 添加到“文件”菜单。添加了选项(复选框)以将文件名的基本名称添加到图形上的迹线图例中,如果从多个文件读取同一列,则此选项非常有用。除非用户指定,否则自动添加 Y 轴标题(基于添加的第一条迹线的列标题)。添加了将 X 加载为 Value/60(秒->分钟)、Val/3600(秒->小时)、val/86400(秒->天)的选项。改进了用户定义的日期/时间格式中 X 值的错误处理,现在允许尾随空格。
3v7 10/6/2023 – 添加了“显示图例”复选框。更改为使用 Builder C++ 11.3 编译器。标题现在位于图表上方的中心。对 csvgraph 中的大小、字体等进行了细微更改。
3v8 4/7/2023 csvsave 其中第二条轨迹的点少于第一条轨迹导致错误 - 已修复。
3v9 2024年2月26日
现在可以打开 Excel 已打开的文件(如果无法打开文件,错误消息会更好)。更好地捕获用户在上一个命令仍在运行时按下“命令”按钮。 Derivative 现在使用用户指定阶数的 17 点 Savitzky Golay 算法(实际使用的是 1->10,可以由用户设置 1->无穷大)。添加 Savitzky Golay 平滑作为过滤选项(25 个点,用户指定顺序,实际使用 1->10,可以由用户设置 1->无穷大)。在滤波器列表中添加了二阶导数 (d2y/d2x),该滤波器使用具有用户指定阶数的 25 点 Savitzky Golay 算法(实际使用 1->10,可以由用户设置 1->无穷大)。如果表达式中引用的列中缺少数字,则该数字将设置为 nan。为表达式添加了常量“nan”。如果表达式的计算结果为 nan,则该行将被跳过,因此这可能是选择要显示的 csvgraph 点的有效方法。将“变量”x 和 line 添加到表达式中。 x 是当前 x 值,line 是当前行号。更新了表达式处理程序,以便 nan==nan 和 nan!=nan 在表达式中按预期工作。
3v10 6/4/2024 添加平滑样条过滤器。
4v0 3/7/2024 Csvgraph 现在可以使用 Unicode 文本 (uft-8),因此可以使用任何字符。这意味着将正确读取 uft-8 编码的 csv 文件,并正确处理其 BOM(字节顺序标记)(如果存在)。列标题、主标题和轴标题都可以包含 utf8 字符。 Utf-8 向后兼容 7 位 ASCII,因此“传统”csv 文件应按照以前的方式进行处理。保存 csv 文件时,您可以选择指定使用 BOM 创建文件。文件名和文件路径也可能包含 Unicode 字符 (utf-8)。请注意,使用最新版本的 Excel 保存 CSV 文件会创建一个带有 BOM 的 utf-8 格式 csv 文件,如果您尝试打开该 csv 文件,Excel 需要 BOM 才能识别该文件。其他更改: • 屏幕图像可以保存为 BMP、jpg、png、gif、tiff 和 wdg 格式。 •?运算符可以在表达式中自由使用,例如 ($1==0?0:1) 现在被接受为有效表达式(以前它只能在删除括号的情况下使用) • 对于 sqrt(x) 多项式中的回归,带有负数的点x 现在被忽略。 • 允许使用X 以及表达式中的x(当剪切和粘贴方程时有用[例如从曲线拟合] 可以使用X)
Cvsgraph 是一个无需安装的便携式程序。
将文件 csvgraph32.exe 或 csvgraph64.exe 复制到计算机上的任何位置(或从 USB 记忆棒或类似设备运行它)。将 csvgraph.pdf 添加到同一目录,以允许从 csvgraph 中访问手册(菜单帮助/手册)。
桌面上的快捷方式使执行 csvgraph 变得简单。
有关详细信息,请参阅文件 LICENSE,但 csvgraph 对于商业和非商业用途都是免费的。
csvgraph 在 Windows(10 32 或 64 位)上运行。它应该可以在早期版本(Vista 之前)或 Linux 上的 Wine 下运行,但这尚未经过测试。
从 3v7 版本开始,源代码是使用 Embarcadero® C++Builder 11.3 编译的 - 存档中包含合适的项目文件。编译时应该没有错误或警告。迁移到 C++Builder 的更新版本应该很容易(至少对于 32/64 位 Windows 目标),但同样,如果恢复到早期版本(回到 Builder C++ V5)也不会很难。必要的。
如果您不使用 C++Builder,源代码的许多部分可能会引起兴趣 - 例如 atof.c 是 ya-sprintf 的一部分,请参阅 https://github.com/pj-miller/ya-sprintf
expr-code.c 包含许多通常有用的例程 - 包括用于存储在字符串中的表达式的快速通用表达式计算器。
UScientificGraph.cpp 包含一个高效的中值滤波器实现和一个多项式拟合实现,这两个实现都可以很好地处理大量数据点,并且这些实现被认为是新颖的。它还包含快速线裁剪算法,允许“无限”放大/缩小。