Я думаю, что mpFXYVector - это путь.
Простейшим способом решения этой проблемы может быть написание класса-оболочки для mpFXYVector, который содержит буфер FIFO последних точек данных. Каждый раз, когда приходит новый объект данных, добавляйте его в буфер FIFO, который отбросит самую старую точку, а затем загрузите mpFXYVector с обновленным буфером. Класс wxMathPlot mpWindow позаботится обо всем, что вам нужно.
Более элегантный подход - это специализация mpFXYVector, которая реализует буфер FIFO, используя простые векторы в mpFXYVector. Преимущество этого состоит в том, что вы держите только одну копию отображаемых данных. Если вы не отображаете много тысяч точек, я сомневаюсь, что преимущество стоит дополнительной проблемы наследования от mpFXYVector, а не просто использования документированного интерфейса mpFXYVector.
После изучения деталей, единственный хитрый момент - заменить mpFXYVector :: SetData () новым методом Add () для добавления точек данных по мере их поступления. Новый метод должен управлять векторами mpFXYVector как буферами FIFO и повторно реализовывать код для обновления ограничивающего прямоугольника (который, к сожалению, не был написан с учетом наследования).
В результате специализация дает решение с меньшими требованиями к памяти и большей гибкостью, чем при использовании оболочки.