Guest User

Qt AreaCharts

a guest
Apr 25th, 2024
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. CustomChartView* Charts::phaseHuileSuperposeChart(const QList<QDateTime> &dateTimeList, const QList<double> &debitHuileList, const QList<double> &debitCireList,
  2.                                                   const QList<double> &debitParaffineList, const QList<double> &debitTensioList, const QList<double> &debitPhaseHuileList)
  3. {
  4.  
  5.     QChart *chart = new QChart();
  6.     chart->setTitle("Phase Huile Superposée");
  7.  
  8.     // Création des séries de données
  9.     QLineSeries *seriesHuile = new QLineSeries();
  10.     seriesHuile->setName("Débit Huile");
  11.     for (int i = 0; i < dateTimeList.size(); ++i) {
  12.         seriesHuile->append(dateTimeList[i].toMSecsSinceEpoch(), debitHuileList[i]);
  13.     }
  14.  
  15.     QLineSeries *seriesCire = new QLineSeries();
  16.     seriesCire->setName("Débit Cire");
  17.     for (int i = 0; i < dateTimeList.size(); ++i) {
  18.         seriesCire->append(dateTimeList[i].toMSecsSinceEpoch(), debitCireList[i]);
  19.     }
  20.  
  21.     QLineSeries *seriesParaffine = new QLineSeries();
  22.     seriesParaffine->setName("Débit Paraffine");
  23.     for (int i = 0; i < dateTimeList.size(); ++i) {
  24.         seriesParaffine->append(dateTimeList[i].toMSecsSinceEpoch(), debitParaffineList[i]);
  25.     }
  26.  
  27.     QLineSeries *seriesTensio = new QLineSeries();
  28.     seriesTensio->setName("Débit Tensio");
  29.     for (int i = 0; i < dateTimeList.size(); ++i) {
  30.         seriesTensio->append(dateTimeList[i].toMSecsSinceEpoch(), debitTensioList[i]);
  31.     }
  32.  
  33.     QLineSeries *seriesPhaseHuile = new QLineSeries();
  34.     seriesPhaseHuile->setName("Débit Phase Huile");
  35.     for (int i = 0; i < dateTimeList.size(); ++i) {
  36.         seriesPhaseHuile->append(dateTimeList[i].toMSecsSinceEpoch(), debitPhaseHuileList[i]);
  37.     }
  38.  
  39.     // Ajout des séries au graphique
  40.     chart->addSeries(seriesHuile);
  41.     chart->addSeries(seriesCire);
  42.     chart->addSeries(seriesParaffine);
  43.     chart->addSeries(seriesTensio);
  44.     chart->addSeries(seriesPhaseHuile);
  45.  
  46.  
  47.  
  48.     // Création des séries d'aire pour remplir l'aire sous chaque courbe
  49.     QAreaSeries *areaSeriesHuile = new QAreaSeries(seriesHuile);
  50.     areaSeriesHuile->setName("Débit Huile");
  51.     QPen penHuile(0xf8a551);
  52.     penHuile.setWidth(1);
  53.     areaSeriesHuile->setPen(penHuile);
  54.  
  55.     QLinearGradient gradientHuile(QPointF(0, 0), QPointF(0, 1));
  56.     gradientHuile.setColorAt(0.0, 0xf8a551);
  57.     gradientHuile.setColorAt(1.0, 0xf8a551);
  58.     gradientHuile.setCoordinateMode(QGradient::ObjectBoundingMode);
  59.     areaSeriesHuile->setBrush(gradientHuile);
  60.  
  61.  
  62.  
  63.     QAreaSeries *areaSeriesCire = new QAreaSeries(seriesCire, seriesHuile);
  64.     areaSeriesCire->setName("Débit Cire");
  65.     QPen penCire(0x7085ac);
  66.     penCire.setWidth(1);
  67.     areaSeriesCire->setPen(penCire);
  68.  
  69.     QLinearGradient gradientCire(QPointF(0, 0), QPointF(0, 1));
  70.     gradientCire.setColorAt(0.0, 0x7085ac);
  71.     gradientCire.setColorAt(1.0, 0x7085ac);
  72.     gradientCire.setCoordinateMode(QGradient::ObjectBoundingMode);
  73.     areaSeriesCire->setBrush(gradientCire);
  74.  
  75.  
  76.  
  77.     // Ajout des séries d'aire au graphique
  78.     chart->addSeries(areaSeriesCire);
  79.     chart->addSeries(areaSeriesHuile);
  80.  
  81.     // Créer un axe X (dateTime).
  82.     QDateTimeAxis *axisX = new QDateTimeAxis();
  83.     axisX->setTickCount(20); // Nombre de points sur l'axe X.
  84.     axisX->setFormat("MM-dd-yyyy\nhh:mm:ss"); // Format de l'axe X avec un saut de ligne entre la date et l'heure.
  85.     axisX->setMin(dateTimeList.first()); // Définir la première date comme minimum de l'axe X.
  86.     axisX->setMax(dateTimeList.last()); // Définir la dernière date comme maximum de l'axe X.
  87.     axisX->setLabelsAngle(70); // Angle de 90 degrés pour afficher les étiquettes en diagonale.
  88.     axisX->setTitleText("Date/Heure"); // Ajouter un titre pour l'axe X.
  89.     axisX->setTitleVisible(true); // Rendre le titre visible.
  90.     chart->addAxis(axisX, Qt::AlignBottom);
  91.  
  92.     // Créer un axe Y (valeur).
  93.     QValueAxis *axisY = new QValueAxis();
  94.     axisY->setMin(0); // Définir la valeur minimale de l'axe Y.
  95.     axisY->setMax(300);
  96.     axisY->setTitleText("Valeurs"); // Ajouter un titre pour l'axe Y.
  97.     axisY->setTitleVisible(true); // Rendre le titre visible.
  98.     chart->addAxis(axisY, Qt::AlignLeft);
  99.  
  100.     // Attacher les séries aux axes
  101.     seriesHuile->attachAxis(axisX);
  102.     seriesCire->attachAxis(axisX);
  103.     seriesParaffine->attachAxis(axisX);
  104.     seriesTensio->attachAxis(axisX);
  105.     seriesPhaseHuile->attachAxis(axisX);
  106.  
  107.     seriesHuile->attachAxis(axisY);
  108.     seriesCire->attachAxis(axisY);
  109.     seriesParaffine->attachAxis(axisY);
  110.     seriesTensio->attachAxis(axisY);
  111.     seriesPhaseHuile->attachAxis(axisY);
  112.  
  113.     chart->legend()->setVisible(true);
  114.     chart->legend()->setAlignment(Qt::AlignBottom);
  115.  
  116.  
  117.     CustomChartView *chartView = new CustomChartView(chart);
  118.     chartView->setRenderHint(QPainter::Antialiasing);
  119.  
  120.     return chartView;
  121. }
Advertisement
Add Comment
Please, Sign In to add comment