繁体   English   中英

Qt-QCustomPlot绘画图

[英]Qt - QCustomPlot painting graph

我在QCustomPlot库中绘制图形时遇到问题。 我想绘制一个对数图,但我使用间隔<-3; 3>进行绘制。 由于对数的定义范围不是从-3到0,因此我尝试在此时间间隔上执行任何操作。

我有以下代码:

QVector<double> x(10001), y(10001);
QVector<double> x1(10001), y1(10001);

double t=-3; //cas
double inkrement = 0.0006;
for (int i=0; i<10001; i++)//kvadraticka funkcia
{
  x[i] = t;
  y[i] = (-1)*t*t-2;
  t+=inkrement;
}

int g=0;
for(double l=-3;l<3; l+=inkrement) {
   if(l<=0.0) continue;
   else {
   //QMessageBox::warning(this, tr("note"), tr("l=%1\n").arg(l), QMessageBox::Ok);
   x1[g] = l;
   y1[g] = log10(l)/log10(exp(1.0));
   //QMessageBox::warning(this, tr("note"), tr("x1=%1\ny1=%2").arg(x1[g]).arg(y1[g]), QMessageBox::Ok);
   //break;
   g++;
   }
}

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

customPlot->addGraph();
customPlot->graph(1)->setData(x1, y1);

customPlot->xAxis->setLabel("x");
customPlot->yAxis->setLabel("y");

customPlot->xAxis->setRange(-3, 3);
customPlot->yAxis->setRange(-10, 5);
customPlot->replot();

其中x1和y1是QVectors ...但是图形就像第一个点在[0,0]中。 所以我有了一条线,将点[0,0]与对数图连接起来,我不知道为什么:(当我在循环前输入l = 0.0006时,一切都很好。您能帮我吗?

似乎您在此循环之前设置了x1和y1的计数。 QVector用零初始化。 因此,如果您未为某些项目设置任何值,则x1y1的末尾将包含零值。

如果g正常,则应使用空的QVector并添加新值:

QVector<double> x1, y1;
//...
x1 << l;
y1 << log10(l)/log10(exp(1.0));

然后可以删除g变量。 而且我认为最好删除i变量并使用for(double l = -3; l <= 3; l+=increment)循环。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM