void MainWindow::genMarginGroup() { resetPlot(); customPlot->plotLayout()->clear(); customPlot->plotLayout()->addElement(0, 0, new QCPAxisRect(customPlot)); customPlot->plotLayout()->addElement(0, 1, new QCPAxisRect(customPlot)); customPlot->plotLayout()->addElement(1, 0, new QCPAxisRect(customPlot)); customPlot->plotLayout()->addElement(1, 1, new QCPAxisRect(customPlot)); foreach (QCPAxisRect *r, customPlot->axisRects()) r->axis(QCPAxis::atBottom)->setTickLabels(false); QCPMarginGroup *marginGroup = new QCPMarginGroup(customPlot); customPlot->axisRect(0)->setMarginGroup(QCP::msLeft, marginGroup); customPlot->axisRect(2)->setMarginGroup(QCP::msLeft, marginGroup); customPlot->axisRect(0)->axis(QCPAxis::atLeft)->setRange(0, 1300); customPlot->axisRect(1)->axis(QCPAxis::atLeft)->setRange(0, 1300); customPlot->axisRect(0)->axis(QCPAxis::atLeft)->setLabel("y"); customPlot->axisRect(1)->axis(QCPAxis::atLeft)->setLabel("y"); customPlot->plotLayout()->setAutoMargins(QCP::msLeft|QCP::msRight|QCP::msBottom); customPlot->plotLayout()->setMargins(QMargins(0, 25, 0, 0)); QFont textFont; textFont.setBold(true); QCPItemText *leftCaption = new QCPItemText(customPlot); customPlot->addItem(leftCaption); leftCaption->position->setType(QCPItemPosition::ptViewportRatio); leftCaption->setClipToAxisRect(false); leftCaption->position->setCoords(0.25, 0); leftCaption->setPositionAlignment(Qt::AlignTop|Qt::AlignHCenter); leftCaption->setText("left sides in margin group"); leftCaption->setFont(textFont); QCPItemText *rightCaption = new QCPItemText(customPlot); customPlot->addItem(rightCaption); rightCaption->position->setType(QCPItemPosition::ptViewportRatio); rightCaption->position->setCoords(0.75, 0); rightCaption->setClipToAxisRect(false); rightCaption->setPositionAlignment(Qt::AlignTop|Qt::AlignHCenter); rightCaption->setText("no margin group"); rightCaption->setFont(textFont); QCPItemLine *splitter = new QCPItemLine(customPlot); splitter->start->setType(QCPItemPosition::ptViewportRatio); splitter->start->setCoords(0.5, 0); splitter->end->setType(QCPItemPosition::ptViewportRatio); splitter->end->setCoords(0.5, 1); splitter->setClipToAxisRect(false); splitter->setPen(QPen(Qt::gray, 0, Qt::DashLine)); customPlot->savePng(dir.filePath("QCPMarginGroup.png"), 400, 400); }
void MainWindow::genAxisRectSpacingOverview() { resetPlot(); customPlot->xAxis->setRange(-0.4, 1.4); customPlot->yAxis->setRange(100, 900); customPlot->xAxis->setVisible(true); customPlot->yAxis->setVisible(true); customPlot->axisRect()->setupFullAxesBox(); customPlot->xAxis->setTickLabels(false); customPlot->axisRect()->setAutoMargins(QCP::msNone); customPlot->axisRect()->setMargins(QMargins(200, 50, 20, 165)); customPlot->axisRect()->setBackground(QColor(245, 245, 245)); customPlot->yAxis->setLabel("Axis Label"); customPlot->yAxis->setOffset(30); customPlot->yAxis->setTickLabelPadding(30); customPlot->yAxis->setLabelPadding(30); customPlot->yAxis->setTickLengthOut(5); customPlot->yAxis->setSubTickLengthOut(2); addBracket(QPointF(200-95-27-17, 30), QPointF(1, 30), "Padding (if auto margins enabled)", QPointF(-25, -5), false, Qt::AlignLeft|Qt::AlignBottom); addBracket(QPointF(1, 370), QPointF(200, 370), "Margin", QPointF(0, 5), false, Qt::AlignHCenter|Qt::AlignTop); addBracket(QPointF(200-30, 240), QPointF(200, 240), "Axis offset", QPointF(-1, 5), true, Qt::AlignRight|Qt::AlignVCenter); addBracket(QPointF(200-35, 250), QPointF(200-30, 250), "Tick length out", QPointF(-1, 5), true, Qt::AlignRight|Qt::AlignVCenter); addBracket(QPointF(200-65, 240), QPointF(200-35, 240), "Tick label padding", QPointF(-1, 5), true, Qt::AlignRight|Qt::AlignVCenter); addBracket(QPointF(200-95-25, 240), QPointF(200-65-25, 240), "Label padding", QPointF(-1, 5), true, Qt::AlignRight|Qt::AlignVCenter); QCPItemLine *leftBorder = new QCPItemLine(customPlot); customPlot->addItem(leftBorder); leftBorder->setClipToAxisRect(false); leftBorder->start->setType(QCPItemPosition::ptViewportRatio); leftBorder->end->setType(QCPItemPosition::ptViewportRatio); leftBorder->start->setCoords(0, 0); leftBorder->end->setCoords(0, 1); leftBorder->setPen(QPen(Qt::gray, 0, Qt::DashLine)); QCPItemText *axisRectLabel = new QCPItemText(customPlot); customPlot->addItem(axisRectLabel); axisRectLabel->position->setType(QCPItemPosition::ptAxisRectRatio); axisRectLabel->position->setCoords(0.5, 0.5); axisRectLabel->setFont(QFont(QFont().family(), 16)); axisRectLabel->setText("QCPAxisRect"); axisRectLabel->setColor(QColor(0, 0, 0, 60)); customPlot->savePng(dir.filePath("AxisRectSpacingOverview.png"), 400, 400); }