void FFT::outputGraphs() { createOutputGraph(); MultiLayer *ml = d_output_graph->multiLayer(); d_output_graph->setTitle(QString::null); d_output_graph->setYAxisTitle(tr("Angle (deg)")); d_output_graph->enableAxis(QwtPlot::xTop, true); d_output_graph->enableAxis(QwtPlot::yRight, true); if (!d_inverse) d_output_graph->setAxisTitle(QwtPlot::xTop, tr("Frequency") + " (" + tr("Hz") + ")"); else d_output_graph->setAxisTitle(QwtPlot::xTop, tr("Time") + + " (" + tr("s") + ")"); ScaleDraw *sd = (ScaleDraw *)d_output_graph->axisScaleDraw(QwtPlot::yLeft); if (sd) sd->setShowTicksPolicy(ScaleDraw::HideBegin); sd = (ScaleDraw *)d_output_graph->axisScaleDraw(QwtPlot::yRight); if (sd) sd->setShowTicksPolicy(ScaleDraw::HideBegin); sd = (ScaleDraw *)d_output_graph->axisScaleDraw(QwtPlot::xBottom); if (sd){ sd->setShowTicksPolicy(ScaleDraw::HideBeginEnd); sd->enableComponent(QwtAbstractScaleDraw::Backbone, false); } QString tableName = d_result_table->objectName(); PlotCurve *pc = d_output_graph->insertCurve(d_result_table, 0, tableName + "_" + tr("Angle"), 0); pc->setPen(QPen(d_curveColor, 1)); d_output_graph->removeLegend(); d_output_graph->updatePlot(); Graph *g = ml->addLayer(0, 0, 0, 0, true); g->setTitle(QString::null); if (!d_inverse) g->setXAxisTitle(tr("Frequency") + " (" + tr("Hz") + ")"); else g->setXAxisTitle(tr("Time") + + " (" + tr("s") + ")"); g->setYAxisTitle(tr("Amplitude")); g->removeLegend(); sd = (ScaleDraw *)g->axisScaleDraw(QwtPlot::xTop); if (sd) sd->setShowTicksPolicy(ScaleDraw::HideBeginEnd); PlotCurve *c = g->insertCurve(d_result_table, 0, tableName + "_" + tr("Amplitude"), 0); c->setPen(QPen(d_curveColor, 1)); g->updatePlot(); double rb = g->axisScaleDiv(QwtPlot::xBottom)->upperBound(); d_output_graph->setAxisScale(QwtPlot::xBottom, 0, rb); d_output_graph->setAxisScale(QwtPlot::xTop, 0, rb); g->setAxisScale(QwtPlot::xBottom, 0, rb); g->setAxisScale(QwtPlot::xTop, 0, rb); ml->setAlignPolicy(MultiLayer::AlignCanvases); ml->setRows(2); ml->setCols(1); ml->setSpacing(0, 0); ml->linkXLayerAxes(); ml->setCommonLayerAxes(false, true); ml->arrangeLayers(false, false); }
void PlotWizard::plot2D(const QStringList& colList) { ApplicationWindow *app = (ApplicationWindow *)this->parent(); if (!app) return; QApplication::setOverrideCursor(QCursor(Qt::WaitCursor)); MultiLayer* g = new MultiLayer(app); app->initMultilayerPlot(g, ""); Graph *ag = g->activeLayer(); app->setPreferences(ag); int curves = (int)colList.count(); int errorBars = 0; for (int i = 0; i < curves; i++) { if (colList[i].contains("(yErr)") || colList[i].contains("(xErr)")) errorBars++; } for (int i = 0; i < curves; i++){ QString s = colList[i]; int pos = s.find(":", 0); QString caption = s.left(pos) + "_"; Table *w = (Table *)app->table(caption); int posX = s.find("(X)", pos); QString xColName = caption + s.mid(pos+2, posX-pos-2); posX = s.find(",", posX); int posY = s.find("(Y)", posX); QString yColName = caption+s.mid(posX+2, posY-posX-2); PlotCurve *c = NULL; if (s.contains("(yErr)") || s.contains("(xErr)")){ posY = s.find(",", posY); int posErr, errType; if (s.contains("(yErr)")){ errType = ErrorBarsCurve::Vertical; posErr = s.find("(yErr)", posY); } else { errType = ErrorBarsCurve::Horizontal; posErr = s.find("(xErr)",posY); } QString errColName = caption+s.mid(posY+2, posErr-posY-2); c = (PlotCurve *)ag->addErrorBars(xColName, yColName, w, errColName, errType); } else c = (PlotCurve *)ag->insertCurve(w, xColName, yColName, app->defaultCurveStyle); CurveLayout cl = ag->initCurveLayout(app->defaultCurveStyle, curves - errorBars); cl.lWidth = app->defaultCurveLineWidth; cl.sSize = app->defaultSymbolSize; ag->updateCurveLayout(c, &cl); } ag->updatePlot(); ag->updateAxesTitles(); ag->newLegend(); g->arrangeLayers(false, true); QApplication::restoreOverrideCursor(); }