Skip to main content

Python bindings for the FlowPlot plotting library

Project description

FlowPlot

FlowPlot is a prerelease plotting library for C++ and Python. It renders plots from reusable JSON templates and runtime data, with a small chaining API for changing template values, binding data, and writing images.

The project is currently focused on scatter and histogram-style plots, template-driven layout, reusable visual defaults, and a GUI workflow for authoring templates.

What Is FlowPlot?

FlowPlot is a plotting system built from a few programmatic parts rather than a single monolithic plotting call.

At the core is a compiler pipeline. It takes a plot template plus runtime data, normalizes the template with defaults, binds the supplied data fields, resolves layout and axes, and outputs renderer-independent drawing commands. Those commands can be consumed directly by an application, or passed to FlowPlot's built-in CPU renderer to produce a final image such as a PNG.

For C++, FlowPlot is header-only. You can include the modular headers or use one of the generated single-header FlowPlot_Mega*.hpp variants. For Python, FlowPlot is packaged as a native extension module built from the same C++ core.

FlowPlot also comes with FlowPlotGUI, a desktop app for visually authoring templates. The GUI is intended to make templates reusable and composable: instead of hard-coding every plot from scratch, users can build pluggable template blocks and feed them new data from C++ or Python. As a prerelease, customization is still limited in places, but the scaffolding for that template-first workflow is already in the project.

Quick Start

Python

Install the Python package:

pip install FlowPlotPy

Create or export a template, then bind data and write a PNG:

import flowplot

plot = flowplot.plot("./ScatterTemplate")
plot.with_data("main.x", [1, 2, 3, 4, 5])
plot.with_data("main.y", [3, 4, 1, 4, 6])
plot.write_png("pythonPlot.png")

The Python package includes a default font, so basic PNG rendering works without manually registering one. NumPy arrays are recommended for larger data, but normal Python lists are supported.

C++

Use the full single-header build when you want the simplest include path:

#define FLOW_PLOT_RENDERER
#define FLOW_PLOT_IMPLEMENTATION
#define FLOW_PLOT_DEFAULT_FONT_PATH "./Inter.ttf"
#include "FlowPlot_Mega.hpp"

#include <vector>

int main()
{
    std::vector<int> x{1, 2, 3, 4, 5};
    std::vector<int> y{3, 4, 1, 4, 6};

    FlowPlot::plot("./ScatterTemplate")
        .withData("main.x", x)
        .withData("main.y", y)
        .writePng("./CppPlot.png");
}

Compile:

g++ -std=c++20 -I. main.cpp -o plot

For modular headers, include FlowPlot/FlowPlot.hpp and add the needed include paths for bundled dependencies.

Tech Stack

FlowPlot is written in modern C++ and uses:

  • RapidJSON for template parsing and normalization.
  • stb libraries for the built-in CPU image/font path.
  • pybind11, scikit-build-core, and CMake for the Python extension build.
  • FlowUi, Vulkan, GLFW, and Native File Dialog for FlowPlotGUI.
  • Doxygen for generated C++ API documentation.

The C++ library can be used as modular headers or as generated amalgamated headers. Regenerate the mega headers with:

python3 tools/generate_flowplot_mega.py

Available generated headers:

  • FlowPlot_Mega_Core.hpp: FlowPlot headers only.
  • FlowPlot_Mega_Stb.hpp: FlowPlot plus stb headers.
  • FlowPlot_Mega_Json.hpp: FlowPlot plus the used RapidJSON subset.
  • FlowPlot_Mega.hpp: FlowPlot plus RapidJSON subset plus stb, intended as the most self-contained option.

Template Overview

FlowPlot templates are JSON documents that describe the static structure of a plot. Runtime code supplies data and may override selected template properties before rendering.

A typical template contains:

  • version: template format version.
  • fonts: optional font manifest for C++ rendering.
  • figure: image size, background, padding, title, and figure-level layout.
  • datasets: named dataset schemas.
  • panels: plot panels with axes, titles, styles, and layers.
  • layers: visual layers such as scatter or histogram mappings.

Runtime data is bound by dataset and field name:

plot.withData("main.x", xValues);
plot.withData("main.y", yValues);
plot.with_data("main.x", x_values)
plot.with_data("main.y", y_values)

Templates are meant to be reusable. You can author a template once, then use it with different data or small property overrides:

FlowPlot::plot("./ScatterTemplate")
    .set("figure.title.text", "Experiment 12")
    .withData("main.x", x)
    .withData("main.y", y)
    .writePng("experiment-12.png");

Detailed API, schema, packaging, and GUI documentation will live in separate docs as the prerelease stabilizes.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

flowplotpy-0.9.7.tar.gz (671.9 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

flowplotpy-0.9.7-cp312-cp312-win_amd64.whl (778.3 kB view details)

Uploaded CPython 3.12Windows x86-64

flowplotpy-0.9.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (865.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

flowplotpy-0.9.7-cp312-cp312-macosx_11_0_arm64.whl (754.8 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

flowplotpy-0.9.7-cp312-cp312-macosx_10_15_x86_64.whl (786.0 kB view details)

Uploaded CPython 3.12macOS 10.15+ x86-64

flowplotpy-0.9.7-cp311-cp311-win_amd64.whl (776.1 kB view details)

Uploaded CPython 3.11Windows x86-64

flowplotpy-0.9.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (865.5 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

flowplotpy-0.9.7-cp311-cp311-macosx_11_0_arm64.whl (753.4 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

flowplotpy-0.9.7-cp311-cp311-macosx_10_15_x86_64.whl (783.9 kB view details)

Uploaded CPython 3.11macOS 10.15+ x86-64

flowplotpy-0.9.7-cp310-cp310-win_amd64.whl (775.1 kB view details)

Uploaded CPython 3.10Windows x86-64

flowplotpy-0.9.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (862.0 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

flowplotpy-0.9.7-cp310-cp310-macosx_11_0_arm64.whl (752.0 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

flowplotpy-0.9.7-cp310-cp310-macosx_10_15_x86_64.whl (782.9 kB view details)

Uploaded CPython 3.10macOS 10.15+ x86-64

File details

Details for the file flowplotpy-0.9.7.tar.gz.

File metadata

  • Download URL: flowplotpy-0.9.7.tar.gz
  • Upload date:
  • Size: 671.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for flowplotpy-0.9.7.tar.gz
Algorithm Hash digest
SHA256 6fda89d60b74c6bdfb57f93e62abe133a25eba155a802bce83c160462740b6f1
MD5 3ffbea1d258851339affcf484ab4fda9
BLAKE2b-256 feb379f8ad618fe10600a8ff14fc77ca0af3ab027ff3718f09cb5050d741d362

See more details on using hashes here.

Provenance

The following attestation bundles were made for flowplotpy-0.9.7.tar.gz:

Publisher: release.yml on Manwe314/FlowPlot

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file flowplotpy-0.9.7-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: flowplotpy-0.9.7-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 778.3 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for flowplotpy-0.9.7-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 9a81a71cc06144270749b87353ce60eeb79c81289fac363b26447d12fa357da1
MD5 e95de78c00d8cace5ad8d14d2a1f9230
BLAKE2b-256 c0f5a43da28798bba5345f5fb67b90e4d21bd38144b1dd40b6e929f48f600315

See more details on using hashes here.

Provenance

The following attestation bundles were made for flowplotpy-0.9.7-cp312-cp312-win_amd64.whl:

Publisher: release.yml on Manwe314/FlowPlot

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file flowplotpy-0.9.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for flowplotpy-0.9.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 dfe42a46ddbf8be98bcb44dc5b677cb8e29872556d46fb47eaf653f2387c6d44
MD5 b33b72e03e8e13c22f06e00104a80629
BLAKE2b-256 dc9b37b7b7a93a802931b841c8c48ce5de4597881e46cae4a5f7aecc8882d6ea

See more details on using hashes here.

Provenance

The following attestation bundles were made for flowplotpy-0.9.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on Manwe314/FlowPlot

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file flowplotpy-0.9.7-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for flowplotpy-0.9.7-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 430f59653102d371e9c443090a9ee1a3c032eb8beb61a3b4867ac182024d4dde
MD5 7d8ce9f446783e9d177b0f070e1e2603
BLAKE2b-256 2ed2237c47fc00959132910575a38fa40da28171a164e3f95cb1fd893c01ae35

See more details on using hashes here.

Provenance

The following attestation bundles were made for flowplotpy-0.9.7-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: release.yml on Manwe314/FlowPlot

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file flowplotpy-0.9.7-cp312-cp312-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for flowplotpy-0.9.7-cp312-cp312-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 dc51c9150ac0b49f1a15da090598e5e06cafd88996946fd1c4c24e8734820202
MD5 df7aa26359a8226f9a10e953329e7b76
BLAKE2b-256 aa2ca84627148ff871435a7b874b5f7e8f05396058dd2f8325e5d4a49931fb20

See more details on using hashes here.

Provenance

The following attestation bundles were made for flowplotpy-0.9.7-cp312-cp312-macosx_10_15_x86_64.whl:

Publisher: release.yml on Manwe314/FlowPlot

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file flowplotpy-0.9.7-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: flowplotpy-0.9.7-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 776.1 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for flowplotpy-0.9.7-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 9745472aafb253846aec489918f3cc93dfac5ae7d77736e704d490fbf885f50b
MD5 0fe82d79aaa699d29a1eaa7e5f489cda
BLAKE2b-256 3621e878c2066d6bc12108c4bb72b332514d2c8af7fd0528a485fb1fd63c8ace

See more details on using hashes here.

Provenance

The following attestation bundles were made for flowplotpy-0.9.7-cp311-cp311-win_amd64.whl:

Publisher: release.yml on Manwe314/FlowPlot

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file flowplotpy-0.9.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for flowplotpy-0.9.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9787a109726dbe02266fb3e2a8cc88f2405ae6ac35a1b181d1419ebbb1d1c0d7
MD5 08a82d4ed3ca643b02d1110ae279c165
BLAKE2b-256 9e9380db4ef9edea934ba972dc517abb595bf52e1a9f289dcdeb120ecdfbb114

See more details on using hashes here.

Provenance

The following attestation bundles were made for flowplotpy-0.9.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on Manwe314/FlowPlot

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file flowplotpy-0.9.7-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for flowplotpy-0.9.7-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1f5dbbbedf8e3cd17427e2bbf0c6338bc682cab10a4cfeceba9c6ce133e9829f
MD5 ca21ff71702f37f040a661df5721e47c
BLAKE2b-256 8c6a63a35391f9d1f9f2312ce991c403ac48dd76595236e111b58dfb3103c19e

See more details on using hashes here.

Provenance

The following attestation bundles were made for flowplotpy-0.9.7-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: release.yml on Manwe314/FlowPlot

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file flowplotpy-0.9.7-cp311-cp311-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for flowplotpy-0.9.7-cp311-cp311-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 c37a2acf4c6f3ef7c95848ff04eb189a3886042ecb576d67fcab7c774eb030eb
MD5 9ecf7470f0d97b9bdd26f26820d4a244
BLAKE2b-256 fd1d1f87a5662aefdbec620e32d00ebd96a267737211108b9d507b52a91d3823

See more details on using hashes here.

Provenance

The following attestation bundles were made for flowplotpy-0.9.7-cp311-cp311-macosx_10_15_x86_64.whl:

Publisher: release.yml on Manwe314/FlowPlot

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file flowplotpy-0.9.7-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: flowplotpy-0.9.7-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 775.1 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for flowplotpy-0.9.7-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 582c7a616b41c0051c4ba767cad338c5c730f5ec187566715283c40f16a8c8a8
MD5 32ca696d4b33ec0423f23e9cc2354bf6
BLAKE2b-256 52e0e825c58255bae68749e899057392f5b8b247c1ef3455414d4fc9331d9cd3

See more details on using hashes here.

Provenance

The following attestation bundles were made for flowplotpy-0.9.7-cp310-cp310-win_amd64.whl:

Publisher: release.yml on Manwe314/FlowPlot

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file flowplotpy-0.9.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for flowplotpy-0.9.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ee21d958f4c9eef27a19ce602482614d768b9d2adc728b392737e0c2487aa44a
MD5 04004e87d55d0a85032a816c93800d8b
BLAKE2b-256 0f26ee5c234fbba905eab6a6da92f667d6b281f57bf1621c43fd3006f406495a

See more details on using hashes here.

Provenance

The following attestation bundles were made for flowplotpy-0.9.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on Manwe314/FlowPlot

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file flowplotpy-0.9.7-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for flowplotpy-0.9.7-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 61a863d55dfc7859e0b89a0dc1d27819998b0b1c3e9744dfa4cde032116330aa
MD5 5ec14b2e706322887783ba2806977272
BLAKE2b-256 ccb4efcb1a798555798b3ef9f47bfa06ae1e82ab141573e94472a87bb9a79711

See more details on using hashes here.

Provenance

The following attestation bundles were made for flowplotpy-0.9.7-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: release.yml on Manwe314/FlowPlot

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file flowplotpy-0.9.7-cp310-cp310-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for flowplotpy-0.9.7-cp310-cp310-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 e510dbb93970f6d8df6f78670d88298fbc6973983079e70eb90df56949989724
MD5 99db7147f25765d106681078cc5e93f4
BLAKE2b-256 810346617cd0549774387290ee89f16e6fe0d912db8824a11f3d0566c350b1e2

See more details on using hashes here.

Provenance

The following attestation bundles were made for flowplotpy-0.9.7-cp310-cp310-macosx_10_15_x86_64.whl:

Publisher: release.yml on Manwe314/FlowPlot

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page