首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Qt - QCustomPlot绘图

Qt - QCustomPlot绘图
EN

Stack Overflow用户
提问于 2013-10-08 16:55:56
回答 1查看 1.3K关注 0票数 1

我在QCustomPlot库中绘制图形时遇到了问题。我想画一个对数图,但我用的是间隔<-3;3>的绘图。由于对数不是从-3定义为- 0,所以在绘制此间隔时,我尝试什么也不做。

我有这样的代码:

代码语言:javascript
复制
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放在循环之前,一切都好。)你能帮我一下吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-08 18:08:56

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

如果g是OK的,您应该使用空QVector并添加新的值:

代码语言:javascript
复制
QVector<double> x1, y1;
//...
x1 << l;
y1 << log10(l)/log10(exp(1.0));

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19253810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档