Basic Plot

Damped sine wave with pan/zoom interaction.

Damped Sine Wave

Source Code

#include <QApplication>
#include <QVBoxLayout>
#include <QWidget>
#include <cmath>

#include "AZPlottingClass.h"

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    
    QWidget window;
    window.setWindowTitle("AZPlottingClass - Basic Demo");
    window.resize(800, 500);
    
    QVBoxLayout *layout = new QVBoxLayout(&window);
    layout->setContentsMargins(0, 0, 0, 0);
    
    AZPlottingClass *plot = new AZPlottingClass(&window);
    
    // Generate damped sine wave data
    QVector<double> x, y;
    for (int i = 0; i < 500; ++i) {
        double t = i * 0.02;
        x.append(t);
        y.append(std::sin(2 * M_PI * 2 * t) * std::exp(-t * 0.3));
    }
    
    // Add data series
    plot->addDataSeries(x, y, "Damped Sine", Qt::blue, 
                        AZPlottingClass::LineStyle::Solid, 2.0);
    
    // Configure axes
    plot->setTitle("Transient Response");
    plot->setXAxisLabel("Time (s)");
    plot->setYAxisLabel("Amplitude");
    
    // Add horizontal reference line at zero
    plot->addHorizontalLine(0, QColor(100, 100, 100), "", 0.5);
    
    // Style and enable interaction
    plot->applyProfessionalStyle();
    plot->setInteractive(true, true);
    plot->setCrosshairEnabled(true);
    plot->setGridVisible(true, false);
    plot->autoScaleAll();
    
    layout->addWidget(plot);
    window.show();
    
    return app.exec();
}