1

嗨,我目前正在通过 C++ 中的管道从文件中绘制数据。我编写了一个读取文本文件、处理信息、在文本文件中绘制数据并根据需要绘制标签和箭头的函数。

现在我需要一种在循环中平滑绘图的方法,以便在每次迭代时读取和绘制不同的文本文件,而 Gnuplot 窗口不会闪烁。

例如:

for (unsigned int i = 0; i< 10; i++){
    Processing_Plotting(i, gp);
}

这是我在主程序中的代码,它将绘制由“i”指示的文本文件。例如:laserData1、laserData2 等。

目前,由于调用速度的原因,情节闪烁并且不可读。我一直在寻找一种使用 Gnuplot 实时绘制数据的方法,但运气不佳,我们将不胜感激。谢谢

我正在绘制的那种东西的图片:http: //imgur.com/3eTpMaB

4

1 回答 1

1

有一个gnuplot-iostream库附带的动画示例。它不会闪烁,至少在我的机器(Linux)上不会。免责声明:我是那个库的作者,所以这是一个无耻的插件。

您的代码片段没有显示您实际与 gnuplot 交互的方式,但是您必须确保做三件事:1)不要在每一帧后关闭然后重新打开管道,2)fflush在每一帧后调用管道, 和 3) 在帧之间添加延迟。要延迟 Linux 调用::usleep(microseconds)(和 include unistd.h),在 Windows 调用::Sleep(milliseconds)和 include上windows.h

将动画数据传送到 gnuplot 的问题是您不知道它是否跟上。所以冲洗和睡眠是至关重要的。但是我已经用 gnuplot 构建了一个示波器,所以我知道它可以很好地工作。

于 2013-08-08T12:48:37.973 回答