绘制箭头图
环境:qt5.14.2 ,mingw,qcustomplot
功能:完成绘制箭头图,且当y为负的时候让三角形朝下。对原始数据进行了拆分,分别存入不同的容器中。然后分别设置样式。
结果展示:
代码:
struct GraphInfo { QVector<double> x; QVector<double> y; QColor penColor=Qt::red; }; void Widget::createChart() { QList<GraphInfo> listInfo; listInfo.append(graph1); listInfo.append(graph2); listInfo.append(graph3); QCPScatterStyle positiveStyle(QCPScatterStyle::ssTriangle, 7); QCPScatterStyle negativeStyle(QCPScatterStyle::ssTriangleInverted, 7); for (GraphInfo &info : listInfo) { QVector<double> x_positive, y_positive; QVector<double> x_negative, y_negative; for (int i = 0; i < info.y.size(); ++i) { if (info.y[i] >= 0) { x_positive.append(info.x[i]); y_positive.append(info.y[i]); } else { x_negative.append(info.x[i]); y_negative.append(info.y[i]); } } // Add positive graph customPlot->addGraph(); customPlot->graph()->setPen(info.penColor); customPlot->graph()->setLineStyle(QCPGraph::lsImpulse); positiveStyle.setBrush(info.penColor); customPlot->graph()->setScatterStyle(positiveStyle); customPlot->graph()->setData(x_positive, y_positive); // Add negative graph customPlot->addGraph(); customPlot->graph()->setPen(info.penColor); customPlot->graph()->setLineStyle(QCPGraph::lsImpulse); negativeStyle.setBrush(info.penColor); customPlot->graph()->setScatterStyle(negativeStyle); customPlot->graph()->setData(x_negative, y_negative); } customPlot->xAxis->setTicks(true); customPlot->yAxis->setTicks(true); customPlot->xAxis->setTickLabels(true); customPlot->yAxis->setTickLabels(true); customPlot->legend->setVisible(false); customPlot->legend->setFont(QFont("Helvetica", 9)); customPlot->axisRect()->setupFullAxesBox(); customPlot->rescaleAxes(); customPlot->replot(); }