在函数gnuplot中重新绘制

时间:2016-10-06 10:34:20

标签: c++ gnuplot

请原谅新手问题 - 无法在网上找到任何有用的信息。

我目前有一个动作捕捉系统,可以将数据传输到我的电脑。我有一个函数(C ++),每次收到一个帧时都会触发它,它当前将这些数据写入文件。我想要的是每次有帧时也要绘制点(即刷新的图)。我遇到的问题是,由于框架触发了一个函数,我似乎无法让gnuplot为每个绘图打开一个新窗口。

我正在使用gnuplot-iostream。目前我有以下代码

void printRigidBodies(Mocha::Frame::KPtr frame) // This function is triggered every time a new frame is received
{
  Gnuplot gp;
  std::ofstream dat;
  dat.open ("Optitrack_data.dat");

  for(auto& name: frame->listRigidBodiesNames()) //For loop over all the bodies contained in the frame
    {

    //... 

    gp << "set title  'Optitrack streaming data' \n";
    gp << "set xrange [-2000:2000]\nset yrange [-2000:2000]\nset zrange [0:2000]\n";
    gp << "splot 'Optitrack_data.dat'u 1:2:3 with points notitle" << std::endl;
    dat.close();
    }
}

我试过了:

  1. 使用“set multiplot”
  2. 在触发'printRigidBodies'功能之前在我的'main'函数中有第一个'splot'并将函数内的行更改为'replot'
  3. 同样使用'reread'和
  4. 尝试定义gnuplot应该输出文件的位置。
  5. 我认为问题是每次调用函数时Gnuplot会有效地重置所有命令。

    任何帮助表示赞赏,正如我所说,我对此很新,所以我很可能以错误的方式使用它!

0 个答案:

没有答案