Free, open-source interactive plotting library for .NET that renders charts in GUI apps, consoles, Blazor and notebooks.
epezent/implot
Immediate mode, GPU accelerated plotting library for Dear ImGui, for real-time and interactive plots in C++ apps.
- Stars
- 6,270
- Forks
- 699
- Open issues
- 121
- Last commit
- 13 days ago
What is it?
ImPlot is a C++ plotting library built on Dear ImGui that follows the same immediate mode style: you call plotting functions every frame between BeginPlot and EndPlot, with no retained GUI state to manage. It is aimed at visualizing application data in real time and at interactive exploration rather than publication-quality or exported figures.
The library supports line, shaded, scatter, bar, error bar, stem, stair, pie, heatmap, histogram and image plots, and several of these can be mixed on one plot. Axes support linear and log scaling, time-formatted x-axes, multiple x and y axes, subplots, and zooming, panning, box selection and query ranges. Its headers and sources have no dependencies beyond ImGui and avoid STL containers in the public API.
Data can be passed as float, double, or 8 to 64-bit signed and unsigned integers, with striding or getter callbacks for custom structures. Integration means adding the source files to a project and creating an ImPlot context alongside the ImGui context.
Key features
- 01Immediate mode API that follows the ImGui BeginX/EndX pattern
- 02GPU accelerated rendering with many plot types, including heatmaps and histograms
- 03Linear and log axis scaling, time-formatted x-axes, and multiple x/y axes
- 04Interactive zooming, panning, box selection and persistent query ranges
- 05Styling that follows the current ImGui theme or can be fully customized
Use cases
- Visualizing live sensor or telemetry data inside a C++ desktop tool
- Building interactive debugging or monitoring panels on top of Dear ImGui
- Exploring signal or time-series data with zoom and range selection
Quick start
- 1
Set up an Dear ImGui environment if you don't already have one
- 2
Add implot.h, implot_internal.h, implot.cpp, implot_items.cpp to your sources (or install via vcpkg)
- 3
Install ImPlot with vcpkg
./vcpkg install implot - 4
Create an ImPlotContext alongside your ImGuiContext
Things to know
- Not suited for publication-quality plots or exporting plots to image files.
- Dear ImGui uses 16-bit indices by default, so dense plots like heatmaps need a config change or renderer support.
In collections
Topics
FAQ
- What is implot?
- Immediate mode, GPU accelerated plotting library for Dear ImGui, for real-time and interactive plots in C++ apps. ImPlot is a C++ plotting library built on Dear ImGui that follows the same immediate mode style: you call plotting functions every frame between BeginPlot and EndPlot, with no retained GUI state to manage. It is aimed at visualizing application data in real time and at interactive exploration rather than publication-quality or exported figures.
- Is implot free to use? What license does it have?
- implot is open source under the MIT license. Check the license terms before using it in commercial products.
- Is implot still maintained?
- Actively maintained. The last commit to implot was on Oct 25, 2026.
- What can I use implot for?
- Visualizing live sensor or telemetry data inside a C++ desktop tool Building interactive debugging or monitoring panels on top of Dear ImGui Exploring signal or time-series data with zoom and range selection
- How do I install implot?
- Set up an Dear ImGui environment if you don't already have one Add implot.h, implot_internal.h, implot.cpp, implot_items.cpp to your sources (or install via vcpkg) Install ImPlot with vcpkg: ./vcpkg install implot Create an ImPlotContext alongside your ImGuiContext
- Where can I get implot?
- The source code and installation instructions are on GitHub: https://github.com/epezent/implot
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
A high-level JSON grammar for declarative interactive charts that compiles to complete Vega specifications.
A Python GUI toolkit built on Dear ImGui that renders on the GPU, with plotting, node editor and drawing APIs.
An easy-to-use immediate mode GUI library for Rust that runs on the web and natively, and can be embedded in game engines.
Python library for building interactive data visualizations, plots and dashboards that render in modern web browsers.
A Java dataframe library for loading, cleaning, transforming and summarizing tabular data, with Plotly-based charting.