3

我使用 QCustomPlot 来显示图片的直方图。我用来设置 a 曲线的函数如下:

void SingleHistogram::setHist(const QVector<double> &x,
                              const QVector<double> &y)
{
    //clearGraphs();
    graph(0)->setData(x, y);
    graph(0)->rescaleAxes(true);
    replot();
}

它适用于我打开的第一张图片:

在此处输入图像描述

但是当我使用相同的函数设置一个新的直方图时,第一条曲线不会被删除(即使setData()调用clearData()图形的方法):

在此处输入图像描述

如您所见,第二条曲线(峰值)已添加到图表中。

我不想QCPGraph为了效率而删除和重建一个新的,因为我觉得它没用。

有人可以告诉我我在这里做错了什么吗?

谢谢!

4

2 回答 2

0

只是出于好奇,你是在清除你的向量 x,y 吗?如果不是,您应该在加载新图表之前清除它们。

代码看起来有点像

// Graph 1    
setHist(x,y);  // set graph

//
// ..Some code
//

//before loading new values
x.clear();
y.clear();

// Graph 2 
// Fill up new values
// x=[],y=[]

// set NEW graph
setHist(x,y);
于 2016-04-03T04:24:00.880 回答
0

实际上,我发现我提供图表的输入数据包含 2 组值。所以每个 x 坐标有 2 个 y 值。

有趣的是,QCustom plot 在这种情况下会生成这种图形!

于 2016-04-08T19:31:46.347 回答