123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- #include "mainwindow.h"
- #include "ui_mainwindow.h"
- #include "qcustomplot.h"
- #include <cmath>
- using namespace std;
-
- /// \fn MainWindow::MainWindow(QWidget *parent)
- /// \brief Constructor
- MainWindow::MainWindow(QWidget *parent) :
- QMainWindow(parent),
- ui(new Ui::MainWindow)
- {
- ui->setupUi(this);
- }
-
- /// \fn void MainWindow::histo(string names[], double values[], int size, string xAxisLabel, string yAxisLabel)
- /// \~English
- /// \brief This function receives information about the ticks and
- /// values for a bar chart, then displays it using the customPlot widget
- /// from qcustomplot.
- /// \param names an array of strings for the names of the x-axis ticks
- /// \param values an array of doubles for the values of y-axis
- /// \param size the size of the names (and values) arrays
- /// \param xAxisLabel a string for the x-axis title
- /// \param yAxisLabel a string for the y-axis title
- /// \~Spanish
- /// \brief Esta funcion recibe informacion sobre las marcas en el eje y los valores
- /// para una grafica de barra, entonces la desplega usando el widget de qcustomplot.
- /// \param names un arreglo de cadenas de caracteres para los nombres de las marcas del el axis-x
- /// \param values un arreglo de dobles (doubles) para los valores del axis-y.
- /// \param size el tamano de los arreglos con los nombres (y valores).
- /// \param xAxisLabel una cadena de caracteres para el titulo del axis-x.
- /// \param yAxisLabel una cadena de caracteres para el titulo del axis-y.
- void MainWindow::histo(
- std::string names[], double values[], int size, string xAxisLabel, string yAxisLabel)
- {
-
- QCustomPlot *customPlot = ui->customPlot;
- QString demoName = "Bar Chart Demo";
- QCPBars *barChart = new QCPBars(customPlot->xAxis, customPlot->yAxis);
-
- customPlot->addPlottable(barChart);
-
- QPen pen;
- pen.setWidthF(1.2);
- //barChart->setName("Fossil fuels");
- pen.setColor(QColor(255, 131, 0));
- barChart->setPen(pen);
- barChart->setBrush(QColor(255, 131, 0, 50));
-
-
- // prepare x axis with labels:
- QVector<double> ticks;
- QVector<QString> labels;
- for (int i = 1; i <= size; i++) {
- ticks.push_back(i);
- labels.push_back(QString(names[i-1].c_str()));
- }
-
- // prepare y axis:
- customPlot->xAxis->setAutoTicks(false);
- customPlot->xAxis->setAutoTickLabels(false);
- customPlot->xAxis->setTickVector(ticks);
- customPlot->xAxis->setTickVectorLabels(labels);
- customPlot->xAxis->setTickLabelRotation(60);
- customPlot->xAxis->setSubTickCount(0);
- customPlot->xAxis->setTickLength(0, 4);
- customPlot->xAxis->grid()->setVisible(true);
- customPlot->xAxis->setRange(0, size+1);
- customPlot->xAxis->setLabel(QString(xAxisLabel.c_str()));
-
- // prepare y axis:
- customPlot->yAxis->setRange(0, *std::max_element(values,values+size));
- customPlot->yAxis->setPadding(5); // a bit more space to the left border
- customPlot->yAxis->setLabel(QString(yAxisLabel.c_str()));
- customPlot->yAxis->grid()->setSubGridVisible(true);
- QPen gridPen;
- gridPen.setStyle(Qt::SolidLine);
- gridPen.setColor(QColor(0, 0, 0, 25));
- customPlot->yAxis->grid()->setPen(gridPen);
- gridPen.setStyle(Qt::DotLine);
- customPlot->yAxis->grid()->setSubGridPen(gridPen);
-
- // Add data:
- QVector<double> barChartData;
- for (int i = 0; i < size; i++) {
- ticks.push_back(i);
- barChartData.push_back(values[i]);
- }
- barChart->setData(ticks, barChartData);
- this->resize(customPlot->width(),customPlot->height());
-
- }
-
- /// \fn MainWindow::~MainWindow()
- /// \brief Destructor
- ///
- MainWindow::~MainWindow()
- {
- delete ui;
- }
-
-
|