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.12.tar.gz (679.1 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.12-cp312-cp312-win_amd64.whl (792.1 kB view details)

Uploaded CPython 3.12Windows x86-64

flowplotpy-0.9.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (883.8 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

flowplotpy-0.9.12-cp312-cp312-macosx_11_0_arm64.whl (776.7 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

flowplotpy-0.9.12-cp312-cp312-macosx_10_15_x86_64.whl (808.7 kB view details)

Uploaded CPython 3.12macOS 10.15+ x86-64

flowplotpy-0.9.12-cp311-cp311-win_amd64.whl (790.0 kB view details)

Uploaded CPython 3.11Windows x86-64

flowplotpy-0.9.12-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (881.2 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

flowplotpy-0.9.12-cp311-cp311-macosx_11_0_arm64.whl (775.5 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

flowplotpy-0.9.12-cp311-cp311-macosx_10_15_x86_64.whl (806.5 kB view details)

Uploaded CPython 3.11macOS 10.15+ x86-64

flowplotpy-0.9.12-cp310-cp310-win_amd64.whl (788.7 kB view details)

Uploaded CPython 3.10Windows x86-64

flowplotpy-0.9.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (881.3 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

flowplotpy-0.9.12-cp310-cp310-macosx_11_0_arm64.whl (773.9 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

flowplotpy-0.9.12-cp310-cp310-macosx_10_15_x86_64.whl (805.4 kB view details)

Uploaded CPython 3.10macOS 10.15+ x86-64

File details

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

File metadata

  • Download URL: flowplotpy-0.9.12.tar.gz
  • Upload date:
  • Size: 679.1 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.12.tar.gz
Algorithm Hash digest
SHA256 8f060dcab02085a78a1c4d537a9d10918fe95878eb91d015fd678a1161388466
MD5 4ae14aa960204c96fe94b1d6b8fbf981
BLAKE2b-256 618eeb8dd88cb3f776adc7da123f2086daacdc0dbc3faffb811cb36ae3600e94

See more details on using hashes here.

Provenance

The following attestation bundles were made for flowplotpy-0.9.12.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.12-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: flowplotpy-0.9.12-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 792.1 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.12-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 f695f002841d3b2d8cc1dfb86a2b3a07bb3d0ce754c088d6ac896ea42d3062b9
MD5 86e6b30e46e3b95cf8ee082a20dee213
BLAKE2b-256 60356b4f43378781d577422a905d44e67aa73da52ea2f7b25b3c26c7fbd75a4e

See more details on using hashes here.

Provenance

The following attestation bundles were made for flowplotpy-0.9.12-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.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for flowplotpy-0.9.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e8d3b9f8cbbe42e3fc9f2569b1128bb74ed3c5d9fef965dbc8c3a34f3e44a5b8
MD5 ecf1036fb3fa688f9c1ce75ccc9220e4
BLAKE2b-256 abc49f5af94bcbaf6f8cc897b2f4fd747cf19d7ea78ca67ef9762b68bb46202c

See more details on using hashes here.

Provenance

The following attestation bundles were made for flowplotpy-0.9.12-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.12-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for flowplotpy-0.9.12-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1d10cc9cc8663f41258d5ece4631ff44c2c2fc3ad0ccfc07058a880664b0650a
MD5 806c94e9acd7d78fffa2a3e4ceb0e37a
BLAKE2b-256 a37ed3fe4632baa6690902b269a415e39b8ec0700b0d09dcacd8df4bccd9563e

See more details on using hashes here.

Provenance

The following attestation bundles were made for flowplotpy-0.9.12-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.12-cp312-cp312-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for flowplotpy-0.9.12-cp312-cp312-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 d6379a9e8f7940773b07637f48cff236d777115702b744d31462acf5664834df
MD5 f5a57b66f9513112f0e97947855d836d
BLAKE2b-256 9e51c3f594ba8a553c4cb9b5b71fdf76053502fba011e6ed81937f30b0692ed4

See more details on using hashes here.

Provenance

The following attestation bundles were made for flowplotpy-0.9.12-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.12-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: flowplotpy-0.9.12-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 790.0 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.12-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 ed40b8f1970fba8ac54acf35facae6aedd91ce890169f97e0ceac6e305f36d81
MD5 912a0a8d62dc63b31bac6883a607c230
BLAKE2b-256 3a194e6fad98a0302e535343a379b4215e427f43f4b4c01eb38f8c90b9bf8062

See more details on using hashes here.

Provenance

The following attestation bundles were made for flowplotpy-0.9.12-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.12-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for flowplotpy-0.9.12-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a2fe65e70a545b9d0ebc32dd3156efbefce88215c1048e9794db1066c0b8c0ad
MD5 61ea825200c391f0c338bc05eb100720
BLAKE2b-256 580e106b29d0e47b18ccbaa33f0d38bf8ba486f1a53c4d5d6d841bb8946ee6f0

See more details on using hashes here.

Provenance

The following attestation bundles were made for flowplotpy-0.9.12-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.12-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for flowplotpy-0.9.12-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a4418fa9b3efeb9d4e6cc5fb4df11b7c2738007bb40c3d1a77535d519cad8204
MD5 e16256e0feb89465ebb13725d1e45a68
BLAKE2b-256 af6645d4dee4f51fe68bfe7af0812f6e6b87de9628bf574383ce3ae29132f122

See more details on using hashes here.

Provenance

The following attestation bundles were made for flowplotpy-0.9.12-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.12-cp311-cp311-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for flowplotpy-0.9.12-cp311-cp311-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 142298254483f84dcb3acf4e02c7c00d0f5804644427350147b4a5dcb20f7d4a
MD5 d033ecb8e7381cfd3e6e22fdf45f1f49
BLAKE2b-256 d75a1e4944fed3b51f1b8dffa0e94aaf890378c6109b3ff2585843f334cbc995

See more details on using hashes here.

Provenance

The following attestation bundles were made for flowplotpy-0.9.12-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.12-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: flowplotpy-0.9.12-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 788.7 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.12-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 295eb70606604f2c54f08d4afbabcf4e586949b9e2912a1d4f569cd1972418e4
MD5 3fede3341cbaca06ddf583d728a19bec
BLAKE2b-256 f187192cb0c146470ccc04d547cc3568b7b07432882894bc07acbceae5a8cee8

See more details on using hashes here.

Provenance

The following attestation bundles were made for flowplotpy-0.9.12-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.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for flowplotpy-0.9.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8bf5d8d94d0d64627efa364bf44bdf56e45916d179340c60ee687435009b7484
MD5 9ebd8e12d30875c9f16def8fd12fa081
BLAKE2b-256 95ce1c96d10fe7b3c1d19274930662d4eee09df2441c75efd875a06f04c72ba0

See more details on using hashes here.

Provenance

The following attestation bundles were made for flowplotpy-0.9.12-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.12-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for flowplotpy-0.9.12-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9ae2ecc28876e54d4ab6e779859c50b9a6dc3779343613e47d25366c906853b9
MD5 81dd78575738e55ae26b2ff87c1204c2
BLAKE2b-256 5f669bfee6c4292a62b0b794f9c7790d9c0c6cf35e5792f6bb116032aea26d18

See more details on using hashes here.

Provenance

The following attestation bundles were made for flowplotpy-0.9.12-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.12-cp310-cp310-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for flowplotpy-0.9.12-cp310-cp310-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 d8bf9c9ff03cc790db16503e0a9ef2854a6f5a54e0d46e9b3f3b90d89f1f0ea5
MD5 c1b29b25b03abfa658d887b54fee3871
BLAKE2b-256 c268ef4acb6f4b5ee4b3c1bef3de96318ec2fd22ed50d3feb349a33da4c9bee8

See more details on using hashes here.

Provenance

The following attestation bundles were made for flowplotpy-0.9.12-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