Metadata-Version: 2.4
Name: hebi-charts
Version: 0.9.4
Summary: Real-time plotting, 3D scenes, and control UIs for robotics.
Author-email: HEBI Robotics <support@hebirobotics.com>
License-Expression: LicenseRef-Proprietary
Requires-Python: >=3.8
Provides-Extra: numpy
Requires-Dist: numpy>=1.20; extra == "numpy"
Description-Content-Type: text/markdown
Project-URL: Homepage, https://www.hebirobotics.com
Project-URL: Documentation, https://github.com/HebiRobotics/hebi-charts-examples
Project-URL: Examples, https://github.com/HebiRobotics/hebi-charts-examples/tree/main/python
Classifier: Intended Audience :: Science/Research
Classifier: Operating System :: Microsoft :: Windows :: Windows 10
Classifier: Operating System :: POSIX :: Linux
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Topic :: Scientific/Engineering :: Visualization
License-File: LICENSE

# HEBI Charts

2D and 3D visualization for low-overhead rendering of high-speed telemetry, with
a focus on robotics. Data ingestion is fully decoupled from the UI thread, so you
can push updates from a 1 MHz control loop without stuttering the 60 FPS render
thread.

Standalone and hardware-agnostic. It takes raw numbers, so it works with any
actuator, sensor, or data source.

```bash
pip install hebi-charts
```

![Robot 3D example](https://raw.githubusercontent.com/HebiRobotics/hebi-charts-examples/docs/docs/images/ex03_python_robot_3d.png)

## Quick start

Runnable examples and the full documentation live in **[hebi-charts-examples](https://github.com/HebiRobotics/hebi-charts-examples)**.

```python
import time
import random
import hebi_charts

window = hebi_charts.GridWindow(title="Python", size=(800, 600))
chart = window.add_line_chart(title="Random Walk", xlabel="sample", ylabel="rnd(x)")
line = chart.add_line("walk")

x, y = 0, 0
window.show()
while window.is_showing():
    time.sleep(0.001)          # optional: reduce the rate
    x += 1
    y += random.uniform(-1, 1)
    line.add_point(x, y)       # non-blocking
```

`Ctrl/Cmd + C` copies the window to the clipboard, `Ctrl/Cmd + S` saves a PNG.

## macOS

Cocoa must own the main thread, so you must wrap the entry point with `run_application` for a thread hand-off. On other platforms it calls the application code directly, so the code below is portable on all platforms.

```python
def main():
    ...  # your application logic

if __name__ == "__main__":
    hebi_charts.run_application(main)
```

## Requirements

The native library is bundled in the wheel. There is no compilation step or extra download step.

| Platform | Wheel |
| --- | --- |
| Windows x86-64 | `win_amd64` |
| Linux x86-64 (glibc) | `manylinux_*_x86_64` |
| macOS Intel | `macosx_*_x86_64` |
| macOS Apple Silicon | `macosx_*_arm64` |

The target system needs local rendering with hardware GPU acceleration. Headless
and software rendering are not supported yet. On Linux the library links against
the system GTK 3, X11, and OpenGL stack.

There is no source distribution, so an unsupported platform fails at install
time with pip's "no matching distribution" error rather than at import.

For the bulk array APIs, install NumPy alongside it:

```bash
pip install "hebi-charts[numpy]"
```

## License

Free to use, including commercially, but **not open source** — the library is
distributed in binary form only. See the `LICENSE` file included in the
distribution, or <https://www.hebirobotics.com/software-license>.
