在 qt 中绘制图形和自定义绘图库绘制曲线



我对QCustomPlot libarary有问题。我制作了用户输入公式和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();

这实际上不是与 QCustomPlot 相关的问题。

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

所以基本上你需要两个QCPGraph

第一个图形应该包含您的关键点,没有任何连接线(QCPGraph::LineStyle::lsNone)。

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

因此,您将获得通过性感曲线相互连接的点。

最新更新