Skip to content

Open Source · LGPL Licensed

Qt Plotting Library

A high-performance 2D/3D plotting library for Qt applications, designed for scientific computing and engineering data visualization.

C++11/17 CMake Qt 5.12+ / Qt 6
20+ Chart Types
2D & 3D Visualization
Qt 5 & 6 Fully Compatible
LGPL Commercial Friendly

Core Features

Everything you need for professional data visualization in Qt applications.

High Performance

Optimized QPainter rendering pipeline for large-scale datasets. Smooth real-time plotting with efficient redraw strategies.

Rich Chart Types

20+ built-in chart types: curves, scatter, bar, box, histogram, spectrogram, K-line, vector field, polar plots, and 3D surfaces.

CMake & Qt6

Full CMake support with find_package(qwt). Single-file amalgamation available. Compatible with Qt 5.12+ and Qt 6.

Multi-Axis System

Create unlimited independent axes via parasite plot architecture — similar to matplotlib's twin axis system with full interaction support.

Modern Design

Clean, flat visual style replacing the legacy embossed look. Professional aesthetics that fit contemporary application design.

Figure Layout

matplotlib-inspired QwtFigure for multi-plot grid layouts. Interactive drag, resize, and manage subplots with overlay widgets.

Quick Start

Integrate QWT into your project in minutes.

1
2
3
4
5
6
# Find and link QWT
find_package(qwt REQUIRED)
target_link_libraries(${PROJECT_NAME} PRIVATE qwt::plot)

# For 3D plotting
target_link_libraries(${PROJECT_NAME} PRIVATE qwt::plot3d)
1
2
3
4
5
6
7
8
// Add two files to your project:
//   src-amalgamate/QwtPlot.h
//   src-amalgamate/QwtPlot.cpp

#include "QwtPlot.h"

auto* plot = new QwtPlot();
auto* curve = new QwtPlotCurve("My Data");
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
#include <qwt_plot.h>
#include <qwt_plot_curve.h>

auto* plot = new QwtPlot("My First Plot");
auto* curve = new QwtPlotCurve("Sine Wave");

QVector<QPointF> data;
for (double x = 0; x < 10.0; x += 0.1)
    data.append(QPointF(x, std::sin(x)));
curve->setSamples(data);

curve->attach(plot);
plot->resize(600, 400);
plot->show();