您好,我目前正在通过 C++ 中的管道绘制文件中的数据。我编写了一个函数来读取文本文件、处理信息、绘制文本文件中的数据并根据需要绘制标签和箭头。
现在我需要一种在循环中平滑绘制的方法,以便在每次迭代时读取和绘制不同的文本文件,而不会出现 Gnuplot 窗口闪烁。
例如:
for (unsigned int i = 0; i< 10; i++){
Processing_Plotting(i, gp);
}
这是我在主程序中的代码,它将绘制由“i”指示的文本文件。例如:laserData1、laserData2 等。
目前由于调用的速度,情节闪烁且不可读。 我一直在寻找一种使用 Gnuplot 实时绘制数据的方法,但运气不佳, 任何帮助,将不胜感激。谢谢
一张我正在策划的事情的图片: http://imgur.com/3eTpMaB
最佳答案
gnuplot-iostream 附带了一个动画示例图书馆。它不会闪烁,至少在我的机器 (Linux) 上不会。免责声明:我是该库的作者,所以这是一个无耻的插件。
您的代码片段没有显示您实际上是如何与 gnuplot 交互的,但是您必须确保做三件事:1) 不要在每一帧之后关闭然后重新打开管道,2) 调用 fflush
在每帧之后在管道上,并且 3) 在帧之间添加延迟。在 Linux 上延迟调用 ::usleep(microseconds)
(并包括 unistd.h
),在 Windows 上调用 ::Sleep(milliseconds)
和包含 windows.h
。
关于将动画数据通过管道传输到 gnuplot 的事情是您不知道它是否跟上。所以冲洗和 sleep 是至关重要的。但我已经用 gnuplot 构建了一个示波器,所以我知道它可以很好地工作。
关于c++ - Gnuplot C++ 从 txt 文件实时绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18101371/