【问题标题】:QCustomPlot: How to update data of a graph?QCustomPlot:如何更新图表的数据?
【发布时间】:2016-04-02 22:33:14
【问题描述】:

我使用 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,因为我觉得它没用。

谁能告诉我我在这里做错了什么?

谢谢!

【问题讨论】:

    标签: c++ qt qcustomplot


    【解决方案1】:

    只是出于好奇,你是在清除你的向量 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);
    

    【讨论】:

    • 失败:error: 'class QCPGraph' has no member named 'replot' :(!
    • 也许你应该添加一个类似clearValues()的函数
    • 它也没有用。我的输入数据被“损坏”了!
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-24
      • 1970-01-01
      • 2016-09-05
      • 1970-01-01
      相关资源
      最近更新 更多