78 typedef QSharedPointer<Bar>
SPtr;
85 Bar(
const QString& title =
"", QWidget* parent =
nullptr);
96 void setData(
const Eigen::Matrix<T, Eigen::Dynamic, 1>& matClassLimitData,
97 const Eigen::Matrix<int, Eigen::Dynamic, 1>& matClassFrequencyData,
100 void setData(
const Eigen::Matrix<T, 1, Eigen::Dynamic>& matClassLimitData,
101 const Eigen::Matrix<int, 1, Eigen::Dynamic>& matClassFrequencyData,
102 int iPrecisionValue);
113 void updatePlot(
const Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic>& matClassLimitData,
114 const Eigen::Matrix<int, Eigen::Dynamic, Eigen::Dynamic>& matClassFrequencyData,
115 int iPrecisionValue);
130 Eigen::VectorXd& vecCoefficientResults,
131 Eigen::VectorXi& vecExponentValues);
145 QStringList m_categories;
146 QList<int> m_frequencies;
155void Bar::setData(
const Eigen::Matrix<T, Eigen::Dynamic, 1>& matClassLimitData,
156 const Eigen::Matrix<int, Eigen::Dynamic, 1>& matClassFrequencyData,
159 Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic> matrixName(matClassLimitData.rows(),1);
160 matrixName.col(0) = matClassLimitData;
161 this->
updatePlot(matrixName, matClassFrequencyData, iPrecisionValue);
167void Bar::setData(
const Eigen::Matrix<T, 1, Eigen::Dynamic>& matClassLimitData,
168 const Eigen::Matrix<int, 1, Eigen::Dynamic>& matClassFrequencyData,
171 Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic> matrixName(1, matClassLimitData.cols());
172 matrixName.row(0) = matClassLimitData;
173 this->
updatePlot(matrixName, matClassFrequencyData, iPrecisionValue);
179void Bar::updatePlot(
const Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic>& matClassLimitData,
180 const Eigen::Matrix<int, Eigen::Dynamic, Eigen::Dynamic>& matClassFrequencyData,
183 Eigen::VectorXd resultDisplayValues;
184 Eigen::VectorXi resultExponentValues;
185 int iClassAmount = std::min(
static_cast<int>(matClassFrequencyData.rows()),
186 static_cast<int>(matClassLimitData.rows()) - 1);
187 if(iClassAmount < 1)
return;
191 m_sLegend =
"X-axis scale: 10e" + QString::number(resultExponentValues(0));
194 m_categories.clear();
195 m_frequencies.clear();
198 for (
int kr = 0; kr < iClassAmount; ++kr)
200 int classFreq = matClassFrequencyData(kr);
201 QString currentLimits = QString::number(resultDisplayValues(kr),
'g', iPrecisionValue)
203 + QString::number(resultDisplayValues(kr + 1),
'g', iPrecisionValue);
204 m_categories << currentLimits;
205 m_frequencies << classFreq;
206 if (classFreq > m_iMaxFrequency) {
207 m_iMaxFrequency = classFreq;
219 Eigen::VectorXd& vecCoefficientResults, Eigen::VectorXi& vecExponentValues)
221 vecCoefficientResults.resize(iClassAmount + 1);
222 vecExponentValues.resize(iClassAmount + 1);
223 double originalValue(0.0),
224 limitDisplayValue(0.0),
225 doubleExponentValue(0.0);
226 int limitExponentValue(0);
227 for (
int ir = 0; ir <= iClassAmount; ++ir)
229 originalValue = matClassLimitData(ir);
230 if (originalValue == 0.0)
232 doubleExponentValue = 0.0;
236 doubleExponentValue = log10(std::fabs(originalValue));
239 limitExponentValue = round(doubleExponentValue);
240 limitDisplayValue = originalValue * (pow(10, -(limitExponentValue)));
241 vecCoefficientResults(ir) = limitDisplayValue;
242 vecExponentValues(ir) = limitExponentValue;
245 int lowestExponentValue{0},
246 highestExponentValue{0};
248 for (
int ir = 0; ir <= iClassAmount; ++ir)
250 if (vecExponentValues(ir) < lowestExponentValue)
252 lowestExponentValue = vecExponentValues(ir);
254 if (vecExponentValues(ir) > highestExponentValue)
256 highestExponentValue = vecExponentValues(ir);
260 if (highestExponentValue > 0)
262 for (
int ir = 0; ir <= iClassAmount; ++ir)
264 while (vecExponentValues(ir) < highestExponentValue)
266 vecCoefficientResults(ir) = vecCoefficientResults(ir) / 10;
267 vecExponentValues(ir)++;
272 if (lowestExponentValue < 0)
274 for (
int ir = 0; ir <= iClassAmount; ++ir)
276 while (vecExponentValues(ir) > lowestExponentValue)
278 vecCoefficientResults(ir) = vecCoefficientResults(ir) * 10;
279 vecExponentValues(ir)--;
void splitCoefficientAndExponent(const Eigen::Matrix< T, Eigen::Dynamic, Eigen::Dynamic > &matClassLimitData, int iClassAmount, Eigen::VectorXd &vecCoefficientResults, Eigen::VectorXi &vecExponentValues)
void setData(const Eigen::Matrix< T, Eigen::Dynamic, 1 > &matClassLimitData, const Eigen::Matrix< int, Eigen::Dynamic, 1 > &matClassFrequencyData, int iPrecisionValue)
void updatePlot(const Eigen::Matrix< T, Eigen::Dynamic, Eigen::Dynamic > &matClassLimitData, const Eigen::Matrix< int, Eigen::Dynamic, Eigen::Dynamic > &matClassFrequencyData, int iPrecisionValue)