83 typedef QSharedPointer<Bar>
SPtr;
90 Bar(
const QString& title =
"", QWidget* parent =
nullptr);
101 void setData(
const Eigen::Matrix<T, Eigen::Dynamic, 1>& matClassLimitData,
102 const Eigen::Matrix<int, Eigen::Dynamic, 1>& matClassFrequencyData,
103 int iPrecisionValue);
105 void setData(
const Eigen::Matrix<T, 1, Eigen::Dynamic>& matClassLimitData,
106 const Eigen::Matrix<int, 1, Eigen::Dynamic>& matClassFrequencyData,
107 int iPrecisionValue);
118 void updatePlot(
const Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic>& matClassLimitData,
119 const Eigen::Matrix<int, Eigen::Dynamic, Eigen::Dynamic>& matClassFrequencyData,
120 int iPrecisionValue);
135 Eigen::VectorXd& vecCoefficientResults,
136 Eigen::VectorXi& vecExponentValues);
150 QStringList m_categories;
151 QList<int> m_frequencies;
160void Bar::setData(
const Eigen::Matrix<T, Eigen::Dynamic, 1>& matClassLimitData,
161 const Eigen::Matrix<int, Eigen::Dynamic, 1>& matClassFrequencyData,
164 Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic> matrixName(matClassLimitData.rows(),1);
165 matrixName.col(0) = matClassLimitData;
166 this->
updatePlot(matrixName, matClassFrequencyData, iPrecisionValue);
172void Bar::setData(
const Eigen::Matrix<T, 1, Eigen::Dynamic>& matClassLimitData,
173 const Eigen::Matrix<int, 1, Eigen::Dynamic>& matClassFrequencyData,
176 Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic> matrixName(1, matClassLimitData.cols());
177 matrixName.row(0) = matClassLimitData;
178 this->
updatePlot(matrixName, matClassFrequencyData, iPrecisionValue);
184void Bar::updatePlot(
const Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic>& matClassLimitData,
185 const Eigen::Matrix<int, Eigen::Dynamic, Eigen::Dynamic>& matClassFrequencyData,
188 Eigen::VectorXd resultDisplayValues;
189 Eigen::VectorXi resultExponentValues;
190 int iClassAmount = matClassFrequencyData.rows();
194 m_sLegend =
"X-axis scale: 10e" + QString::number(resultExponentValues(0));
197 m_categories.clear();
198 m_frequencies.clear();
201 for (
int kr = 0; kr < iClassAmount; ++kr)
203 int classFreq = matClassFrequencyData(kr);
204 QString currentLimits = QString::number(resultDisplayValues(kr),
'g', iPrecisionValue)
206 + QString::number(resultDisplayValues(kr + 1),
'g', iPrecisionValue);
207 m_categories << currentLimits;
208 m_frequencies << classFreq;
209 if (classFreq > m_iMaxFrequency) {
210 m_iMaxFrequency = classFreq;
222 Eigen::VectorXd& vecCoefficientResults, Eigen::VectorXi& vecExponentValues)
224 vecCoefficientResults.resize(iClassAmount + 1);
225 vecExponentValues.resize(iClassAmount + 1);
226 double originalValue(0.0),
227 limitDisplayValue(0.0),
228 doubleExponentValue(0.0);
229 int limitExponentValue(0);
230 for (
int ir = 0; ir <= iClassAmount; ++ir)
232 originalValue = matClassLimitData(ir);
233 if (originalValue == 0.0)
235 doubleExponentValue = 0.0;
239 doubleExponentValue = log10(std::fabs(originalValue));
242 limitExponentValue = round(doubleExponentValue);
243 limitDisplayValue = originalValue * (pow(10, -(limitExponentValue)));
244 vecCoefficientResults(ir) = limitDisplayValue;
245 vecExponentValues(ir) = limitExponentValue;
248 int lowestExponentValue{0},
249 highestExponentValue{0};
251 for (
int ir = 0; ir <= iClassAmount; ++ir)
253 if (vecExponentValues(ir) < lowestExponentValue)
255 lowestExponentValue = vecExponentValues(ir);
257 if (vecExponentValues(ir) > highestExponentValue)
259 highestExponentValue = vecExponentValues(ir);
263 if (highestExponentValue > 0)
265 for (
int ir = 0; ir <= iClassAmount; ++ir)
267 while (vecExponentValues(ir) < highestExponentValue)
269 vecCoefficientResults(ir) = vecCoefficientResults(ir) / 10;
270 vecExponentValues(ir)++;
275 if (lowestExponentValue < 0)
277 for (
int ir = 0; ir <= iClassAmount; ++ir)
279 while (vecExponentValues(ir) > lowestExponentValue)
281 vecCoefficientResults(ir) = vecCoefficientResults(ir) * 10;
282 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)