gpt4 book ai didi

c++ - 如何使用 wxMathPlot 绘制 "real-time"图?

转载 作者:太空狗 更新时间:2023-10-29 19:40:05 26 4
gpt4 key购买 nike

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

即我不想要一次性读取文件的静态图表 - 我想要绘制流数据并继续向图表右侧延伸 - (并让左侧脱落/滚动出 View )

编辑

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

最佳答案

谢谢 ravenspoint...!!我按照你说的做了..它完美无缺!这是我的 AddData() 函数:

void mpFXYVector::AddData(float x, float y, std::vector<double> &xs, std::vector<double> &ys)
{
// Check if the data vectora are of the same size
if (xs.size() != ys.size()) {
wxLogError(_("wxMathPlot error: X and Y vector are not of the same length!"));
return;
}

//Delete first point if you need a filo buffer (i dont need it)
//xs.erase(xs.begin());
//xy.erase(xy.begin());

//Add new Data points at the end
xs.push_back(x);
ys.push_back(y);


// Copy the data:
m_xs = xs;
m_ys = ys;

// Update internal variables for the bounding box.
if (xs.size()>0)
{
m_minX = xs[0];
m_maxX = xs[0];
m_minY = ys[0];
m_maxY = ys[0];

std::vector<double>::const_iterator it;

for (it=xs.begin();it!=xs.end();it++)
{
if (*it<m_minX) m_minX=*it;
if (*it>m_maxX) m_maxX=*it;
}
for (it=ys.begin();it!=ys.end();it++)
{
if (*it<m_minY) m_minY=*it;
if (*it>m_maxY) m_maxY=*it;
}
m_minX-=0.5f;
m_minY-=0.5f;
m_maxX+=0.5f;
m_maxY+=0.5f;
}
else
{
m_minX = -1;
m_maxX = 1;
m_minY = -1;
m_maxY = 1;
}
}

在 Main() 中你只需要:

m_Vector->AddData(xPos,yPos,vectorX, vectorY);
m_plot->Fit();

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com