在qt和customplot库绘制曲线中绘制图形

时间:2013-11-10 14:41:43

标签: c++ qt qcustomplot

我有QCustomPlot图书馆的问题。我创建了用户输入公式和x值的程序,然后程序计算y值并将它们显示在漂亮的表中。

在该程序使用x值并计算y值后绘制二次函数。但它不是绘制曲线而是绘制锐利的线条。像统计图或类似的想法。

我想知道我如何能够转换那些例如

x--1,-2,1,2,0

y - -0.5,-0.25,0.5,0.25,0

到二次函数。

如果你需要这里是我画图的代码。

kiek = 0;

    //limitas is just counter which counted how many times user typed values

   // user typed x values and calculated values are stored in double type array



   QVector<double> x(limitas), y(limitas);


    for(int z= 0; z<limitas; z++){

        x[z] = iksai[kiek];
        y[z] = d[kiek];
kiek++;

    }
ui->customPlot->addGraph();
ui->customPlot->graph(0)->setData(x, y);

max = *std::max_element(d, d + limitas);

max1 = *std::max_element(iksai, iksai + limitas);

min1 = *std::min_element(d, d + limitas);

min = *std::min_element(iksai, iksai + limitas);

ui->customPlot->xAxis->setRange(min, max1);
ui->customPlot->yAxis->setRange(min1, max);

ui->customPlot->replot();

1 个答案:

答案 0 :(得分:3)

实际上并非QCustomPlot相关问题。

您必须使用某些样条曲线填充点之间的空格。 这是一篇很好的文章,展示了什么样条线:http://cairnarvon.rotahall.org/2009/07/05/quadratic-spline-interpolation/

所以基本上你需要两个QCPGraph

第一张图应保留您的关键点,而不包含任何连接线(QCPGraph::LineStyle::lsNone)。

第二个图应该保持计算(通过你的代码!)具有一定分辨率的样条点(例如,minX,minX + dx,minX + dx * 2 .. maxX的样条点)并且没有散射。

所以你会用性感的曲线让你的分数相互连接。

相关问题