本文整理汇总了C++中QCPGraph::addData方法的典型用法代码示例。如果您正苦于以下问题:C++ QCPGraph::addData方法的具体用法?C++ QCPGraph::addData怎么用?C++ QCPGraph::addData使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QCPGraph
的用法示例。
在下文中一共展示了QCPGraph::addData方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: setupDateTest
void MainWindow::setupDateTest(QCustomPlot *customPlot)
{
#if QT_VERSION >= QT_VERSION_CHECK(4, 7, 0)
customPlot->xAxis->setTickLabelType(QCPAxis::ltDateTime);
QCPGraph *g = customPlot->addGraph();
g->addData(QDateTime(QDate(350,5,21), QTime(0, 0)).toMSecsSinceEpoch()/1000.0, 1);
g->addData(QDateTime(QDate(650,5,21), QTime(0, 0)).toMSecsSinceEpoch()/1000.0, 2);
g->addData(QDateTime(QDate(740,5,21), QTime(0, 0)).toMSecsSinceEpoch()/1000.0, 4);
g->addData(QDateTime(QDate(1000,5,21), QTime(0, 0)).toMSecsSinceEpoch()/1000.0, 8);
g->rescaleAxes();
#endif
}
示例2: updateCurve
void OdroidReader::updateCurve(int row, int col) {
if (col != 0) return;
bool enable = ui->sensors->item(row,col)->checkState() == Qt::Checked;
if (enable && graphs.at(row) == nullptr) {
if (origcols.count() == 0) {
ui->sensors->item(row,col)->setCheckState(Qt::Unchecked);
return;
}
QColor color = origcols.takeFirst();
QCPGraph* graph = ui->globalPlot->addGraph();
DataSeries* series = data[rowMap[row]];
graph->setName(series->descriptor->name());
graph->setProperty("unit",series->descriptor->unit());
graph->setPen(color);
graph->setData(series->getTimestamps(), series->getValues());
connect(series,&DataSeries::newValue,[graph,this](double time, double value) {
graph->addData(time,value);
ui->globalPlot->rescaleAxes();
ui->globalPlot->yAxis->scaleRange(1.2,ui->globalPlot->yAxis->range().center());
ui->globalPlot->replot();
});
graphs[row] = graph;
ui->sensors->item(row,col)->setBackgroundColor(color);
} else if (!enable && graphs.at(row) != nullptr){
disconnect(data.at(rowMap[row]),SIGNAL(newValue(double,double)),0,0);
origcols.push_front(graphs.at(row)->pen().color());
ui->globalPlot->removeGraph(graphs.at(row));
graphs[row] = nullptr;
ui->sensors->item(row,col)->setBackgroundColor(Qt::white);
}
示例3: on_listView_clicked
void MainWindow::on_listView_clicked(const QModelIndex &index)
{
//QModelIndex a = ui->listView->selectedIndexes().back();
QVariant selected = dataModel->compNameList->data(index,Qt::DisplayRole);
dataModel->dataViewComp = selected.toString();
QVector<double> dataViewPrice = dataModel->priceBuff.value(selected.toString());
QVector<double> xval;
QVector<double> baseVal;
if(dataViewPrice.empty()) return;
double min = dataViewPrice[0];
for(auto &i : dataViewPrice) min = std::fmin(min,i);
for(int i = 0; i<dataViewPrice.size(); i++){
xval<<i;
baseVal<<min;
}
QCustomPlot* p = ui->qcpDataView;;
p->clearGraphs();
QCPGraph* timeline = new QCPGraph(p->xAxis,p->yAxis);
timeline->addData(xval,dataViewPrice);
QCPGraph* base = new QCPGraph(p->xAxis,p->yAxis);
base->setData(xval,baseVal);
p->addPlottable(timeline);
p->addPlottable(base);
timeline->setChannelFillGraph(base);
timeline->setPen(QPen(QColor(0,0,0,0)));
timeline->setBrush(QColor(0,0,255,100));
//QVector<double> ticks;
QVector<QString> labels;
int L = this->dataModel->dateBuff.values()[0].size()-1;
int len = 6;
float step = (float)L/(float)len;
for(int i = 0; i<= len; i++){
labels<<this->dataModel->dateBuff.values()[0][i*step].toString("MM/yy");
}
p->xAxis->setTickVectorLabels(labels);
p->xAxis->setAutoTicks(true);
p->xAxis->setAutoTickLabels(false);
p->xAxis->setTickLabelRotation(-60);
//p->xAxis->setSubTickCount(0);
//p->xAxis->setTickLength(0, len-1);
p->xAxis->grid()->setVisible(true);
//p->xAxis->setRange(0, len-2);
//p->xAxis->setTickVector(ticks);
p->rescaleAxes();
p->replot();
}
示例4: addPacket
void ScatterWidget::addPacket(const ScatterPacket &packet)
{
QCPGraph *graph = NULL;
int nG = ui->scatter->graphCount();
for(int i=0; i<nG; i++)
{
if(ui->scatter->graph(i)->name() == QString::fromStdString(packet.legend))
{
graph = ui->scatter->graph(i);
break;
}
}
if(!graph)
{
graph = ui->scatter->addGraph();
// ----------------------- Scatter Configuration ---------------------------
graph->setName(QString::fromStdString(packet.legend));
QColor color_ = colorManager.getNewDifferentColor();
graph->setPen(QPen(color_));
graph->setLineStyle(QCPGraph::lsNone);
graph->setScatterStyle(QCPScatterStyle(QCPScatterStyle::ssPlusCircle, 4));
ui->scatter->legend->setVisible(true);
}
graph->addData(packet.point.x, packet.point.y);
//if(packet.point.x > ui->scatter->xAxis->max)
double max_x = qMax(packet.point.x, ui->scatter->xAxis->range().upper);
double min_x = qMin(packet.point.x, ui->scatter->xAxis->range().lower);
double max_y = qMax(packet.point.y, ui->scatter->yAxis->range().upper);
double min_y = qMin(packet.point.y, ui->scatter->yAxis->range().lower);
ui->scatter->xAxis->setRange(min_x, max_x);
ui->scatter->yAxis->setRange(min_y, max_y);
if(realTimePlot)
ui->scatter->replot();
else
ui->scatter->replot(QCustomPlot::rpQueuedReplot);
if(ui->recButton->isChecked())
{
vector<double> vec2_double(2);
vec2_double[0] = packet.point.x;
vec2_double[1] = packet.point.y;
vector<string> vec2_string(2);
vec2_string[0] = packet.legend + "_x";
vec2_string[1] = packet.legend + "_y";
logger.addLogCsv(graph->dataCount(), vec2_string, vec2_double);
}
}
示例5: mousePress
void smart_plot::mousePress(QMouseEvent *event)
{
static double prevKey, prevValue;
if(event->button() == Qt::MiddleButton)
{
QCPAbstractPlottable *plottable = activePlot()->plottableAt(event->localPos());
if(plottable)
{
QCPGraph *graph = qobject_cast<QCPGraph*>(plottable);
plot_analytics analytics;
plotStats stats;
if(graph)
{
//Do diff by % range vs
double mouseKey = graph->keyAxis()->pixelToCoord(event->localPos().x());
double mouseValue = graph->valueAxis()->pixelToCoord(event->localPos().y());
double keyRange = graph->keyAxis()->range().size();
double keyDistance_no_abs = 0;
double value = 0;
double key = 0;
bool ok = false;
double m = std::numeric_limits<double>::max();
//QCPGraphDataContainer
analytics.plotAnalyze( graph, &stats, graph->keyAxis()->range());
//Iterate through on screen data and see which point is closest
QCPGraphDataContainer::const_iterator QCPGraphDataBegin = graph->data().data()->findBegin(graph->keyAxis()->range().lower,true);
QCPGraphDataContainer::const_iterator QCPGraphDataEnd = graph->data().data()->findEnd(graph->keyAxis()->range().upper,true);
for (QCPGraphDataContainer::const_iterator QCPGraphDataIt=QCPGraphDataBegin; QCPGraphDataIt!=QCPGraphDataEnd; ++QCPGraphDataIt)
{
double valueRange = graph->valueAxis()->range().size();
double keyDistance = qAbs(mouseKey - QCPGraphDataIt->key)/keyRange;
double valueDistance = qAbs(mouseValue - QCPGraphDataIt->value)/valueRange;
if( (valueDistance + keyDistance) < m )
{
value = QCPGraphDataIt->value;
key = QCPGraphDataIt->key;
keyDistance_no_abs = mouseKey - QCPGraphDataIt->key;
ok = true;
m = (valueDistance + keyDistance);
}
}
// qDebug () << QDateTime::fromTime_t((int)mouseKey) << value;
if(ok)
{
QToolTip::hideText();
if(!qSharedPointerDynamicCast<QCPAxisTickerDateTime>(graph->keyAxis()->ticker()).isNull())
{
if(QApplication::keyboardModifiers().testFlag(Qt::ControlModifier))
{
quint32 timeDelta = qAbs(mouseKey-prevKey);
// add the bracket at the top:
QCPItemBracket *bracket = new QCPItemBracket(activePlot());
bracket->left->setAxes(graph->keyAxis(), graph->valueAxis());
bracket->left->setCoords(prevKey, value);
bracket->right->setAxes(graph->keyAxis(), graph->valueAxis());
bracket->right->setCoords(mouseKey, value);
// add the text label at the top:
QCPItemText *wavePacketText = new QCPItemText(activePlot());
wavePacketText->position->setParentAnchor(bracket->center);
wavePacketText->position->setCoords(0, -10); // move 10 pixels to the top from bracket center anchor
wavePacketText->setPositionAlignment(Qt::AlignBottom|Qt::AlignHCenter);
wavePacketText->setText(
QString("%L1: ΔX->%L2 ΔY->%L3").
arg(graph->name().isEmpty() ? "..." : graph->name()).
arg(seconds_to_DHMS(timeDelta)).
arg(value-prevValue));
wavePacketText->setFont(QFont(font().family(), 12));
activePlot()->replot();
}
else if(QApplication::keyboardModifiers().testFlag(Qt::AltModifier))
{
if(QApplication::keyboardModifiers().testFlag(Qt::ShiftModifier))
graph->addData(graph->keyAxis()->pixelToCoord(event->localPos().x()),
graph->valueAxis()->pixelToCoord(event->localPos().y()));
else if(keyDistance_no_abs < 0)
graph->addData(key - 1, std::numeric_limits<double>::quiet_NaN());
else
graph->addData(key + 1, std::numeric_limits<double>::quiet_NaN());
activePlot()->replot();
}
else if(QApplication::keyboardModifiers().testFlag(Qt::ShiftModifier))
{
//Delete point
graph->data().data()->remove(key);
activePlot()->replot();
}
//Hold Alt to insert NAN(Break link?)
else
{
//.........这里部分代码省略.........