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 を配置すると、すべて問題ありません。