我正在尝试使用管道接口到 gnuplot(一个标准的 gnuplot_i.{cpp,hpp}),以便生成在另一个用 C++ 编写的程序中不断变化的值的实时显示。这工作正常,但我想看看是否有人有任何改进建议。
此实现包含一种将单个向量和 2 个向量绘制为 2D 图的便捷方法。它通过对 mktemp 函数的标准库调用写入临时文件,然后将其用作 gnuplot plot 调用的输入来实现这一点。这会生成太多临时文件,并且当绘图上的更新率很高时(可能在某个点上 IO 受限)时似乎无法正常工作。我决定在绘图调用中使用“-”伪文件,并将向量直接发送到管道(以单行结尾,上面带有“e”)。这效果更好,但仍然不是很好。
有没有一种更巧妙的方法来做我想做的事情,而不是在值发生变化时不断地重新生成情节?多久用新信息更新一次情节是安全的?或者,也许有一种更简单的方法来实现我想要做的事情?
@安迪·罗斯
我本身没有“要求”。我所说的 slick 的意思是,在仍然使用 gnuplot 的同时,也许有一种更优雅的方法来做我正在尝试的事情。尽管优雅是主观的,但我发现我目前采用的方法特别不优雅。我所说的安全是指是否有人知道使用上述方法会出现 IO 问题(例如,延迟、显示锁定等)的更新速率。
由于以下原因(至少是我的候选名单),我想避免使用工具包。
- 我发现在不同的架构上正确安装它们通常很重要,尤其是作为非 root 用户(以及当它们需要跨操作系统不标准的依赖项时)。
- 对于使用此软件的其他人,它们会产生额外的编译依赖性。
- 大多数人为此目的使用 afiak似乎没有任何真正的标准(我自己以及与我一起工作的大多数人通常只是保存日志类型文件并在 MATLAB 中进行运行后分析)。
- 我知道/学习 gnuplot 语法。我不知道 superPlottingApiXX 的语法。
- gnuplot 的功能集对于我希望能够用这个软件做的事情类型来说几乎是理想的。
但是,如果您在 C/C++ 绘图库方面有任何特别的建议,这些建议似乎很适合上面的列表,我总是对建议感兴趣(警告:我已经四处寻找它们)。