Matplot / ImPlot 📈

Various lib for plotting from c++, ruby or python - Matplotlib / github / wikipedia

Ruby

  • Matplotlib - enables to directly call matplotlib from Ruby language. This is built on top of pycall.

ImGui / C++

ImPlot

A 2D immediate mode, GPU accelerated plotting library. - online demo

see also

  • ImPlot Demos - demos here are more sophisticated than those provided in implot_demo.h, and may rely on third-party libraries that would otherwise clutter ImPlot’s main repository.

Using as meson wrap-git with GLFW + ImGui (+ SKIA)

details
your_project/
├── subprojects/
│   ├── implot.wrap
│   └── packagefiles/
│       └── implot/               <-- must match directory = implot
│           └── meson.build       <-- must be here
add _subprojects/implot.wrap_
[wrap-git]
directory = implot
url = https://github.com/epezent/implot.git
 
# Or pin a specific commit
revision = master
depth = 1

patch_directory = implot_patch
add _subprojects/packagefiles/implot/meson.build_
# https://github.com/epezent/implot?tab=readme-ov-file#integration
project('implot', 'cpp')

implot_sources = files(
  'implot.cpp',
  'implot_items.cpp',
  'implot_demo.cpp',  # optional
)
)

implot_lib = static_library(
  'implot',
  implot_sources,
  include_directories: include_directories('.'),
  dependencies: [dependency('imgui', fallback: ['imgui', 'imgui_dep'])],
)

implot_dep = declare_dependency(
  link_with: implot_lib,
  include_directories: include_directories('.'),
)

meson.override_dependency('implot', implot_dep)
**Notes** - Meson **merge together git clone+patch once** when issuing `$ meson setup build .` - afterwhat modifying subprojects/packagefiles/implot/meson.build won't be taken into account - you need to delete `subprojects/implot` and do the setup again to make it happen. - or run (?) [`meson subprojects update`](https://mensinda.github.io/meson/Subprojects.html#update-subprojects) update your project _meson.build_
implot_dep = dependency('implot', fallback: ['implot', 'implot_dep'])
implot_sources = subproject('implot').get_variable('implot_sources')

# Example executable
executable('my_app',
  sources,
  implot_sources,  # 👈 add implot sources to your build
  dependencies: [implot_dep],
)
[And into your imgui code](https://github.com/epezent/implot?tab=readme-ov-file#integration)
ImGui::CreateContext();
ImPlot::CreateContext();   // Create and destroy an ImPlotContext wherever you do so for your ImGuiContext
To test it, you can add call `ImPlot::ShowDemoWindow()` somewhere in your update loop.

demo

ImPlot3D / HN

easy-to-use, high-performance 3D plotting functionality.

Written on January 2, 2024, Last update on July 6, 2025
math imgui lib python visualizer meson