67 const QString &x_axis_label,
68 const QString &y_axis_label)
104 const std::vector<double> &keys,
105 const std::vector<double> &values)
107 QCPGraph *graph_p = graph(graph_index);
109 if(graph_p ==
nullptr)
110 qFatal(
"Programming error.");
117 const std::vector<double> &keys,
118 const std::vector<double> &values)
120 if(graph_p ==
nullptr)
121 qFatal(
"Pointer cannot be nullptr.");
127 QVector<double> key_qvector;
128 QVector<double> value_qvector;
139 QVector(keys.begin(),
142 QVector(values.begin(),
146 for(
auto &value : keys)
147 key_qvector.push_back(value);
149 for(
auto &value : values)
150 value_qvector.push_back(value);
152 graph_p->setData(key_qvector, value_qvector,
true);
154 graph_p->setPen(
m_pen);
164 QCPGraph *graph_p = graph(graph_index);
166 if(graph_p ==
nullptr)
167 qFatal(
"Programming error.");
169 graph_p->data().clear();
183 QString(
"The color to be used for the plot graph is invalid."));
188 QCPGraph *graph_p = addGraph();
190 graph_p->setLayer(
"plotsLayer");
196 QVector<double> key_qvector;
197 QVector<double> value_qvector;
207 QVector(trace.
xValues().begin(),
208 .trace.xValues()end());
210 QVector(trace.
yValues().begin(),
214 for(
auto &value : trace.
xValues())
216 key_qvector.push_back(value);
219 for(
auto &value : trace.
yValues())
221 value_qvector.push_back(value);
226 qDebug() <<
"The size of the x values for trace is:" << key_qvector.size()
227 <<
"and for y values is:" << value_qvector.size();
231 for(qsizetype iter = 0; iter < key_qvector.size(); ++iter)
232 text += QString(
"(%1,%2)\n")
233 .arg(key_qvector.at(iter), 0,
'f', 6)
234 .arg(value_qvector.at(iter), 0,
'f', 6);
236 qDebug().noquote() << text;
241 graph_p->setData(key_qvector, value_qvector,
true);
243 QPen pen = graph()->pen();
245 graph()->setPen(pen);
251 static_cast<void (QCPAbstractPlottable::*)(
bool)
>(
252 &QCPAbstractPlottable::selectionChanged),
261 if(graphCount() == 1)
279 QString(
"The color to be used for the plot graph is invalid."));
284 QCPBars *bars_p =
new QCPBars(xAxis, yAxis);
285 bars_p->setWidthType(QCPBars::WidthType::wtPlotCoords);
286 bars_p->setWidth(0.0005);
287 bars_p->setLayer(
"plotsLayer");
293 std::vector<double> x_values = bars.
xValues();
294 QVector<double> key_qvector;
295 key_qvector.assign(x_values.begin(), x_values.end());
297 std::vector<double> y_values = bars.
yValues();
298 QVector<double> value_qvector;
299 value_qvector.assign(y_values.begin(), y_values.end());
301 qDebug() <<
"The size of the x values for trace is:" << key_qvector.size()
302 <<
"and for y values is:" << value_qvector.size();
306 qDebug() <<
"The size of the x values for trace is:" << key_qvector.size()
307 <<
"and for y values is:" << value_qvector.size();
311 for(qsizetype iter = 0; iter < key_qvector.size(); ++iter)
312 text += QString(
"(%1,%2)\n")
313 .arg(key_qvector.at(iter), 0,
'f', 6)
314 .arg(value_qvector.at(iter), 0,
'f', 6);
316 qDebug().noquote() << text;
321 bars_p->setData(key_qvector, value_qvector,
true);
323 QPen pen = graph()->pen();
325 graph()->setPen(pen);
331 static_cast<void (QCPAbstractPlottable::*)(
bool)
>(
332 &QCPAbstractPlottable::selectionChanged),
341 if(graphCount() == 1)
372 QCPGraph *theGraph = graph(index);
374 if(theGraph ==
nullptr)
376 "basetraceplotwidget.cpp @ indIntegrationLowerRangeForKey() -- ERROR "
377 "theGraph cannot be nullptr.");
383 QSharedPointer<QCPGraphDataContainer> graph_data_container_p =
386 QCPDataRange dataRange = graph_data_container_p->dataRange();
388 if(!dataRange.isValid())
391 if(!dataRange.size())
394 if(dataRange.size() > 1)
396 double firstKey = graph_data_container_p->at(dataRange.begin())->key;
397 double lastKey = graph_data_container_p->at(dataRange.end())->key;
409 range.lower = graph_data_container_p->at(dataRange.end() - 2)->key;
410 range.upper = graph_data_container_p->at(dataRange.end() - 1)->key;
421 range.lower = firstKey;
422 range.upper = graph_data_container_p->at(dataRange.begin() + 1)->key;
431 graph_data_container_p->findBegin(key,
true)->key;
433 std::prev(graph_data_container_p->findEnd(key,
true))
445 std::vector<double> keys;
447 QCPGraph *graph_p = graph(graph_index);
449 if(graph_p ==
nullptr)
450 qFatal(
"Programming error.");
452 QSharedPointer<QCPGraphDataContainer> graph_data_container_p =
456 auto beginIt = graph_data_container_p->begin();
457 auto endIt = graph_data_container_p->end();
459 for(
auto iter = beginIt; iter != endIt; ++iter)
460 keys.push_back(iter->key);
468 std::vector<double> values;
470 QCPGraph *graph_p = graph(graph_index);
472 if(graph_p ==
nullptr)
473 qFatal(
"Programming error.");
475 QSharedPointer<QCPGraphDataContainer> graph_data_container_p =
479 auto beginIt = graph_data_container_p->begin();
480 auto endIt = graph_data_container_p->end();
482 for(
auto iter = beginIt; iter != endIt; ++iter)
483 values.push_back(iter->key);
498 QCPRange key_range(xAxis->range().lower, xAxis->range().upper);
500 if(plottable_p !=
nullptr)
503 return plottable_p->getValueRange(ok, QCP::SignDomain::sdBoth, key_range);
509 int graph_count = graphCount();
516 double temp_min_value = std::numeric_limits<double>::max();
517 double temp_max_value = std::numeric_limits<double>::min();
519 bool found_range =
false;
521 for(
int iter = 0; iter < graph_count; ++iter)
523 QCPGraph *plottable_p = graph(iter);
525 QCPRange value_range =
526 plottable_p->getValueRange(ok, QCP::SignDomain::sdBoth, key_range);
531 if(value_range.lower < temp_min_value)
532 temp_min_value = value_range.lower;
533 if(value_range.upper > temp_max_value)
534 temp_max_value = value_range.upper;
540 return QCPRange(temp_min_value, temp_max_value);
553 QCPAbstractPlottable *plottable_p = plottable(index);
555 if(plottable_p ==
nullptr)
556 qFatal(
"Programming error.");
564 if(graph_p ==
nullptr)
565 qFatal(
"Programming error.");
567 QCPItemTracer *tracer_p =
new QCPItemTracer(
this);
568 tracer_p->setGraph(graph_p);
569 tracer_p->setInterpolating(
true);
570 tracer_p->setGraphKey(
x);
571 tracer_p->updatePosition();
573 double value = tracer_p->position->value();
575 tracer_p->setGraph(
nullptr);
578 removeItem(tracer_p);
586 QCPGraph *graph_p = graph(index);
588 if(graph_p ==
nullptr)
589 qFatal(
"Programming error.");
597 [[maybe_unused]] QCPAxis::SelectablePart part,
602 m_context.m_keyboardModifiers = QGuiApplication::queryKeyboardModifiers();
604 if(
m_context.m_keyboardModifiers & Qt::ControlModifier)
623 if(axis->orientation() == Qt::Vertical)
625 if(
m_context.m_keyboardModifiers & Qt::ShiftModifier)
636 yAxis->setRange(value_range);
654 m_context.m_pressedMouseButtons ^=
event->button();
666 double xLower = xAxis->range().lower;
667 double xUpper = xAxis->range().upper;
670 double yLower = yAxis->range().lower;
671 double yUpper = yAxis->range().upper;
698 xAxis->setRange(xLower, xUpper - xDelta);
724 if(
m_context.m_keyboardModifiers & Qt::ShiftModifier)
734 yAxis->setRange(value_range);
750 yAxis->setRange(yLower, yUpper - yDelta);
800 yAxis->setRange(xAxis->range().lower,
801 std::max<double>(
m_context.m_yRegionRangeStart,
810 if(
m_context.m_keyboardModifiers & Qt::ShiftModifier)
817 yAxis->setRange(value_range);
843 if(
m_context.m_keyboardModifiers & Qt::ShiftModifier)
850 yAxis->setRange(value_range);
872 "This function can only be called if the mouse click was on one of the "
882 if(
m_context.m_keyboardModifiers & Qt::ShiftModifier)
889 yAxis->setRange(value_range);
921 QCPGraph *graph_p = graph(index);
923 return toTrace(graph_p, only_visible_range);
929 if(graph_p ==
nullptr)
930 qFatal(
"Programming error. Pointer cannot be nullptr.");
934 if(only_visible_range)
938 QCPRange x_axis_range = xAxis->range();
942 return toTrace(x_axis_range, graph_p);
946 qDebug() <<
"Failed to get key range. Will return full key range.";
949 QSharedPointer<QCPGraphDataContainer> graph_data_container_p = graph_p->data();
952 auto beginIt = graph_data_container_p->begin();
953 auto endIt = graph_data_container_p->end();
955 for(
auto iter = beginIt; iter != endIt; ++iter)
964 QCPGraph *graph_p = graph(index);
966 if(graph_p ==
nullptr)
967 qFatal(
"Programming error.");
969 return toTrace(x_axis_range, graph_p);
974 const QCPGraph *graph_p)
const
981 QSharedPointer<QCPGraphDataContainer> graph_data_container_sp;
983 graph_data_container_sp = graph_p->data();
988 auto beginIt = graph_data_container_sp->findBegin(x_axis_range.lower,
994 auto endIt = graph_data_container_sp->findEnd(x_axis_range.upper,
997 for(
auto iter = beginIt; iter != endIt; ++iter)
998 data_trace.push_back(
DataPoint(iter->key, iter->value));
1012 QSharedPointer<QCPBarsDataContainer> bars_data_container_sp;
1014 bars_data_container_sp = bars_p->data();
1019 auto beginIt = bars_data_container_sp->findBegin(x_axis_range.lower,
1025 auto endIt = bars_data_container_sp->findEnd(x_axis_range.upper,
1028 for(
auto iter = beginIt; iter != endIt; ++iter)
1029 data_trace.push_back(
DataPoint(iter->key, iter->value));
A simple container of DataPoint instances.
std::vector< pappso_double > xValues() const
std::vector< pappso_double > yValues() const
tries to keep as much as possible monoisotopes, removing any possible C13 peaks and changes multichar...