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 = std::min(
static_cast<int>(matClassFrequencyData.rows()),
191 static_cast<int>(matClassLimitData.rows()) - 1);
192 if(iClassAmount < 1)
return;
196 m_sLegend =
"X-axis scale: 10e" + QString::number(resultExponentValues(0));
199 m_categories.clear();
200 m_frequencies.clear();
203 for (
int kr = 0; kr < iClassAmount; ++kr)
205 int classFreq = matClassFrequencyData(kr);
206 QString currentLimits = QString::number(resultDisplayValues(kr),
'g', iPrecisionValue)
208 + QString::number(resultDisplayValues(kr + 1),
'g', iPrecisionValue);
209 m_categories << currentLimits;
210 m_frequencies << classFreq;
211 if (classFreq > m_iMaxFrequency) {
212 m_iMaxFrequency = classFreq;
224 Eigen::VectorXd& vecCoefficientResults, Eigen::VectorXi& vecExponentValues)
226 vecCoefficientResults.resize(iClassAmount + 1);
227 vecExponentValues.resize(iClassAmount + 1);
228 double originalValue(0.0),
229 limitDisplayValue(0.0),
230 doubleExponentValue(0.0);
231 int limitExponentValue(0);
232 for (
int ir = 0; ir <= iClassAmount; ++ir)
234 originalValue = matClassLimitData(ir);
235 if (originalValue == 0.0)
237 doubleExponentValue = 0.0;
241 doubleExponentValue = log10(std::fabs(originalValue));
244 limitExponentValue = round(doubleExponentValue);
245 limitDisplayValue = originalValue * (pow(10, -(limitExponentValue)));
246 vecCoefficientResults(ir) = limitDisplayValue;
247 vecExponentValues(ir) = limitExponentValue;
250 int lowestExponentValue{0},
251 highestExponentValue{0};
253 for (
int ir = 0; ir <= iClassAmount; ++ir)
255 if (vecExponentValues(ir) < lowestExponentValue)
257 lowestExponentValue = vecExponentValues(ir);
259 if (vecExponentValues(ir) > highestExponentValue)
261 highestExponentValue = vecExponentValues(ir);
265 if (highestExponentValue > 0)
267 for (
int ir = 0; ir <= iClassAmount; ++ir)
269 while (vecExponentValues(ir) < highestExponentValue)
271 vecCoefficientResults(ir) = vecCoefficientResults(ir) / 10;
272 vecExponentValues(ir)++;
277 if (lowestExponentValue < 0)
279 for (
int ir = 0; ir <= iClassAmount; ++ir)
281 while (vecExponentValues(ir) > lowestExponentValue)
283 vecCoefficientResults(ir) = vecCoefficientResults(ir) * 10;
284 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)