QCustomPlot使用技巧(一)
一、QCustomPlot坐标轴
一个QCustomPlot里有四个坐标轴,其中xAxis、yAxis、xAxis2和yAxis2分别表示如图所示的4个方向的坐标轴,xAxis2和yAxis2默认隐藏,可以通过语句显示出来。
yAxis2->setVisible(true); //显示y轴2 即右侧坐标轴
xAxis2->setVisible(true); //显示x轴2 即上方坐标轴
下面是坐标轴的常用操作,每一个坐标轴都可单独设置。
xAxis->setBasePen(QPen(QColor(0, 163, 222))); //x轴线
xAxis->setLabelColor(Qt::black); //设置字体
xAxis->grid()->setPen(QPen(QColor("#159C77"), 1, Qt::DotLine)); //x中间的水平线
xAxis->setTickLabelColor(Qt::black); //x标号
xAxis->setTickPen(QPen(QColor("#159C77"))); //x大分割
xAxis->setLabel(QStringLiteral("时间")); //文字
xAxis->setSubTickPen(QPen(QColor("#159C77"))); //x小分割
xAxis->setSubTickLength(0);
xAxis->setSubTicks(false); //x小分割不显示
xAxis->setTickLabelFont(QFont("", 10));
xAxis->setRange(QCPRange(0, 50)); //x轴范围
xAxis->ticker()->setTickCount(50); //x轴有多少个点
xAxis->ticker()->setTickStepStrategy(QCPAxisTicker::tssReadability);
xAxis->setUpperEnding(QCPLineEnding::esSpikeArrow);
xAxis->rescale(true); //设置自动缩放
如果需要设置x轴为时间显示
//x轴时间设置
QDateTime date_time = QDateTime::currentDateTime();
double now = date_time.toMSecsSinceEpoch();
QSharedPointer<QCPAxisTickerDateTime> dateTimeTicker(new QCPAxisTickerDateTime);//dateTimeTicker->setDateTimeSpec(Qt::UTC);//设施世界时间,即不加上时区的时间
dateTimeTicker->setTickCount(20);
dateTimeTicker->setTickStepStrategy(QCPAxisTicker::tssMeetTickCount);
dateTimeTicker->setDateTimeFormat("d h:m");//设置x轴刻度显示格式
ui.plot_->xAxis->setTicker(dateTimeTicker);
ui.plot_->xAxis->setRange((now - 3600)*0.001, now*0.001);
ui.plot_->xAxis->setTickLabelRotation(30);
二、QCPGraph对象
QCustomPlot中的每一个曲线是一个QCPGraph对象,凡是跟显示数据有关的我们就对QCPGraph进行操作或调用QCPGraph对象提供的方法。可以使用该语句创建一个QCPGraph对象
QCPGraph *graph = ui.plot_->addGraph();
创建的的QCPGraph会存储在QCustomPlot内,使用graph(i)及和返回。
ui.plot_->graph(i)
下面是QCPGraph的常用设置
setLineStyle(LineStyle ls); //设置线条
setData(x,y); //添加数据
setData(const QVector<double> &keys, const QVector<double> &values, bool alreadySorted=false);//添加数据容器