2015-08-16 2 views
1

Я играю с QCustomPlot libary для Qt. Я создал несколько сюжетов. Но у меня остались вопросы:QCustomPlot: как установить процент по оси y? Как изменить выравнивание метки метки?

1: Как я могу установить диапазон у-оси от 0% до 100%?

2: Мои тиковые метки центрированы ниже тиков. Как я могу изменить это на выравнивание влево?

Благодарим за помощь.

Питер

// 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); 

ответ

2

Вы должны решить оба вопроса с

ui->customPlot->yAxis->setRange(0, 100, Qt::AlignLeft); 

EDIT: чтобы показать свой текст для клещами, необходимо добавить этот код:

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); 
+0

Спасибо за ваш ответ , Я хотел бы иметь знак процента рядом с моими тиковыми ярлыками, такими как «10%», «20%» и так далее. Как я могу это сделать? К сожалению, «Qt :: AlignLeft» ничего не делает. Он по-прежнему сосредоточен. –

+0

добавлено возможное решение – gengisdave

+0

Решение проблемы с процентом. Но выравнивание по-прежнему не работает. –

Смежные вопросы