我正在考虑使用wxMathPlot绘制/绘制一些连续到达的数据。我想使用它绘制“实时”绘图/图形。那可能吗?

IE。我不希望只读取文件一次的静态图-我想要绘制流数据并继续到图的右边-(并且让左侧下降/滚动到 View 之外)

编辑

我仍然没有得到答案。 wxmathPlot库中有一个有趣的类,名为mpFXYVector,但它似乎只是从数据 vector 中绘制一个图。我想要的是可以馈入数据流并水平滚动图形的东西(如果需要,还可以调整比例大小)

最佳答案

我认为 mpFXYVector 是要走的路。

解决这个问题的最简单方法可能是为 mpFXYVector 编写一个包装类,它保存最近数据点的 FIFO 缓冲区。每次新数据点到达时,将其添加到 FIFO 缓冲区,这将删除最旧的点,然后使用更新的缓冲区加载 mpFXYVector。 wxMathPlot 类 mpWindow 将处理您需要的其余部分。

更优雅的方法是使用 mpFXYVector 中的简单 vector 实现 FIFO 缓冲区的 mpFXYVector 的特殊化。这样做的好处是您只持有一份显示数据的拷贝。除非您要显示数千个点,否则我怀疑从 mpFXYVector 继承而不是简单地使用 mpFXYVector 文档化接口(interface)的额外麻烦是否值得。

查看详细信息后,唯一棘手的一点是用新方法 Add() 替换 mpFXYVector::SetData() 以在数据点到达时添加它们。新方法需要将 mpFXYVector vector 作为 FIFO 缓冲区进行管理,并重新实现代码以更新边界框(不幸的是,编写时没有考虑到继承)。

结果是特化提供了比使用包装器具有更小的内存需求和更大的灵活性的解决方案。

关于c++ - 如何使用 wxMathPlot 制作 "real-time"图?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/989817/

10-11 17:03