69 const QString &x_axis_label,
70 const QString &y_axis_label)
108 const std::vector<double> &keys,
109 const std::vector<double> &values)
111 QCPGraph *graph_p = graph(graph_index);
113 if(graph_p ==
nullptr)
114 qFatal(
"Programming error.");
122 const std::vector<double> &keys,
123 const std::vector<double> &values)
125 if(graph_p ==
nullptr)
126 qFatal(
"Pointer cannot be nullptr.");
132 QVector<double> key_qvector;
133 QVector<double> value_qvector;
144 QVector(keys.begin(),
147 QVector(values.begin(),
151 for(
auto &value : keys)
152 key_qvector.push_back(value);
154 for(
auto &value : values)
155 value_qvector.push_back(value);
157 graph_p->setData(key_qvector, value_qvector,
true);
159 graph_p->setPen(
m_pen);
170 QCPGraph *graph_p = graph(graph_index);
172 if(graph_p ==
nullptr)
173 qFatal(
"Programming error.");
175 graph_p->data().clear();
190 QString(
"The color to be used for the plot graph is invalid."));
195 QCPGraph *graph_p = addGraph();
197 graph_p->setLayer(
"plotsLayer");
203 QVector<double> key_qvector;
204 QVector<double> value_qvector;
214 QVector(trace.
xValues().begin(),
215 .trace.xValues()end());
217 QVector(trace.
yValues().begin(),
221 for(
auto &value : trace.
xValues())
223 key_qvector.push_back(value);
226 for(
auto &value : trace.
yValues())
228 value_qvector.push_back(value);
233 qDebug() <<
"The size of the x values for trace is:" << key_qvector.size()
234 <<
"and for y values is:" << value_qvector.size();
238 for(qsizetype iter = 0; iter < key_qvector.size(); ++iter)
239 text += QString(
"(%1,%2)\n")
240 .arg(key_qvector.at(iter), 0,
'f', 6)
241 .arg(value_qvector.at(iter), 0,
'f', 6);
243 qDebug().noquote() << text;
248 graph_p->setData(key_qvector, value_qvector,
true);
250 QPen pen = graph()->pen();
252 graph()->setPen(pen);
258 static_cast<void (QCPAbstractPlottable::*)(
bool)
>(
259 &QCPAbstractPlottable::selectionChanged),
268 if(graphCount() == 1)
300 QCPGraph *theGraph = graph(index);
302 if(theGraph ==
nullptr)
304 "basetraceplotwidget.cpp @ indIntegrationLowerRangeForKey() -- ERROR "
305 "theGraph cannot be nullptr.");
311 QSharedPointer<QCPGraphDataContainer> graph_data_container_p =
314 QCPDataRange dataRange = graph_data_container_p->dataRange();
316 if(!dataRange.isValid())
319 if(!dataRange.size())
322 if(dataRange.size() > 1)
324 double firstKey = graph_data_container_p->at(dataRange.begin())->key;
325 double lastKey = graph_data_container_p->at(dataRange.end())->key;
337 range.lower = graph_data_container_p->at(dataRange.end() - 2)->key;
338 range.upper = graph_data_container_p->at(dataRange.end() - 1)->key;
349 range.lower = firstKey;
350 range.upper = graph_data_container_p->at(dataRange.begin() + 1)->key;
359 graph_data_container_p->findBegin(key,
true)->key;
361 std::prev(graph_data_container_p->findEnd(key,
true))
374 std::vector<double> keys;
376 QCPGraph *graph_p = graph(graph_index);
378 if(graph_p ==
nullptr)
379 qFatal(
"Programming error.");
381 QSharedPointer<QCPGraphDataContainer> graph_data_container_p =
385 auto beginIt = graph_data_container_p->begin();
386 auto endIt = graph_data_container_p->end();
388 for(
auto iter = beginIt; iter != endIt; ++iter)
389 keys.push_back(iter->key);
398 std::vector<double> values;
400 QCPGraph *graph_p = graph(graph_index);
402 if(graph_p ==
nullptr)
403 qFatal(
"Programming error.");
405 QSharedPointer<QCPGraphDataContainer> graph_data_container_p =
409 auto beginIt = graph_data_container_p->begin();
410 auto endIt = graph_data_container_p->end();
412 for(
auto iter = beginIt; iter != endIt; ++iter)
413 values.push_back(iter->key);
429 QCPRange key_range(xAxis->range().lower, xAxis->range().upper);
431 if(plottable_p !=
nullptr)
434 return plottable_p->getValueRange(ok, QCP::SignDomain::sdBoth, key_range);
440 int graph_count = graphCount();
447 double temp_min_value = std::numeric_limits<double>::max();
448 double temp_max_value = std::numeric_limits<double>::min();
450 bool found_range =
false;
452 for(
int iter = 0; iter < graph_count; ++iter)
454 QCPGraph *plottable_p = graph(iter);
456 QCPRange value_range =
457 plottable_p->getValueRange(ok, QCP::SignDomain::sdBoth, key_range);
462 if(value_range.lower < temp_min_value)
463 temp_min_value = value_range.lower;
464 if(value_range.upper > temp_max_value)
465 temp_max_value = value_range.upper;
471 return QCPRange(temp_min_value, temp_max_value);
485 QCPAbstractPlottable *plottable_p = plottable(index);
487 if(plottable_p ==
nullptr)
488 qFatal(
"Programming error.");
497 if(graph_p ==
nullptr)
498 qFatal(
"Programming error.");
500 QCPItemTracer tracer(
this);
501 tracer.setGraph(graph_p);
502 tracer.setInterpolating(
true);
503 tracer.setGraphKey(
x);
504 tracer.updatePosition();
506 return tracer.position->value();
513 QCPGraph *graph_p = graph(index);
515 if(graph_p ==
nullptr)
516 qFatal(
"Programming error.");
525 [[maybe_unused]] QCPAxis::SelectablePart part,
551 if(axis->orientation() == Qt::Vertical)
564 yAxis->setRange(value_range);
595 double xLower = xAxis->range().lower;
596 double xUpper = xAxis->range().upper;
599 double yLower = yAxis->range().lower;
600 double yUpper = yAxis->range().upper;
627 xAxis->setRange(xLower, xUpper - xDelta);
663 yAxis->setRange(value_range);
679 yAxis->setRange(yLower, yUpper - yDelta);
730 yAxis->setRange(xAxis->range().lower,
747 yAxis->setRange(value_range);
781 yAxis->setRange(value_range);
803 "This function can only be called if the mouse click was on one of the "
820 yAxis->setRange(value_range);
853 QCPGraph *graph_p = graph(index);
862 if(graph_p ==
nullptr)
863 qFatal(
"Programming error. Pointer cannot be nullptr.");
867 QSharedPointer<QCPGraphDataContainer> graph_data_container_p =
871 auto beginIt = graph_data_container_p->begin();
872 auto endIt = graph_data_container_p->end();
874 for(
auto iter = beginIt; iter != endIt; ++iter)
884 QCPGraph *graph_p = graph(index);
886 if(graph_p ==
nullptr)
887 qFatal(
"Programming error.");
889 return toTrace(x_axis_range, graph_p);
895 const QCPGraph *graph_p)
const
901 QSharedPointer<QCPGraphDataContainer> graph_data_container_sp;
903 graph_data_container_sp = graph_p->data();
906 auto beginIt = graph_data_container_sp->findBegin(x_axis_range.lower,
909 auto endIt = graph_data_container_sp->findEnd(x_axis_range.upper,
912 for(
auto iter = beginIt; iter != endIt; ++iter)
913 data_trace.push_back(
DataPoint(iter->key, iter->value));
double m_xRegionRangeStart
Qt::KeyboardModifiers m_keyboardModifiers
QPointF m_currentDragPoint
double m_yRegionRangeStart
Qt::MouseButtons m_pressedMouseButtons
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...