首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QCustomPlot:如何在y轴上设定百分比?如何改变勾标对齐?

QCustomPlot:如何在y轴上设定百分比?如何改变勾标对齐?
EN

Stack Overflow用户
提问于 2015-08-16 19:45:51
回答 1查看 2.4K关注 0票数 1

我在玩Qt的QCustomPlot libary。我成功地创造了一些情节。但我仍有疑问:

1:我如何将y轴范围从0%设置到100%?

他说:我的滴答标签在滴答的中间。我怎样才能把它改为左对齐呢?

谢谢你的帮助。

彼得

代码语言:javascript
复制
// generate some data:
    QVector<double> x(101), y(101); // initialize with entries 0..100
    for (int i=0; i<101; ++i)
    {
      x[i] = (i*960); // x goes from -1 to 1
      y[i] = x[i]/96000.0; // let's plot a quadratic function
    }
    // create graph and assign data to it:
    ui->customPlot->addGraph();
    ui->customPlot->graph(0)->setData(x, y);

    // set axes ranges, so we see all data:
    ui->customPlot->xAxis->setTickLabelType(QCPAxis::ltDateTime);
    ui->customPlot->xAxis->setDateTimeSpec(Qt::UTC);
    ui->customPlot->xAxis->setDateTimeFormat("hh:mm");
    ui->customPlot->xAxis->setAutoTickStep(false);
    ui->customPlot->xAxis->setTickStep(3600);
    ui->customPlot->xAxis->setRange(0, 86399);
    ui->customPlot->yAxis->setRange(0, 1);
    ui->customPlot->replot();

ui->customPlot->xAxis->setBasePen(QPen(Qt::white, 1));
ui->customPlot->yAxis->setBasePen(QPen(Qt::white, 1));
ui->customPlot->xAxis->setTickPen(QPen(Qt::white, 1));
ui->customPlot->yAxis->setTickPen(QPen(Qt::white, 1));
ui->customPlot->xAxis->setSubTickPen(QPen(Qt::white, 1));
ui->customPlot->yAxis->setSubTickPen(QPen(Qt::white, 1));
ui->customPlot->xAxis->setTickLabelColor(Qt::white);
ui->customPlot->yAxis->setTickLabelColor(Qt::white);
ui->customPlot->xAxis->grid()->setPen(QPen(QColor(140, 140, 140), 1, Qt::DotLine));
ui->customPlot->yAxis->grid()->setPen(QPen(QColor(140, 140, 140), 1, Qt::DotLine));
ui->customPlot->xAxis->grid()->setSubGridPen(QPen(QColor(80, 80, 80), 1, Qt::DotLine));
ui->customPlot->yAxis->grid()->setSubGridPen(QPen(QColor(80, 80, 80), 1, Qt::DotLine));
ui->customPlot->xAxis->grid()->setSubGridVisible(true);
ui->customPlot->yAxis->grid()->setSubGridVisible(true);
ui->customPlot->xAxis->grid()->setZeroLinePen(Qt::NoPen);
ui->customPlot->yAxis->grid()->setZeroLinePen(Qt::NoPen);
ui->customPlot->xAxis->setUpperEnding(QCPLineEnding::esSpikeArrow);
ui->customPlot->yAxis->setUpperEnding(QCPLineEnding::esSpikeArrow);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-16 20:12:02

你应该用

代码语言:javascript
复制
ui->customPlot->yAxis->setRange(0, 100, Qt::AlignLeft);

编辑:要显示滴答的自定义文本,您应该添加以下代码:

代码语言:javascript
复制
QVector<double> TickValues;
QVector<QString> TickLabels;
// you can safely change the values according to the output
TickValues << 0  << 20 << 40 << 60 << 80 << 100;
TickLabels << "0" << "20%" << "40%" << "60%" << "80%" << "100%";
// disable default ticks and their labels
ui->customPlot->yAxis->setAutoTicks(false);
ui->customPlot->yAxis->setAutoTickLabels(false);
// add your custom values and labels
ui->customPlot->yAxis->setTickVector(TicksValues);
ui->customPlot->yAxis->setTickVectorLabels(TickLabels);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32039210

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档