A versatile PyQt6 and Matplotlib-based plotting tool for CSV and SMV data files.
Project description
Toucan-Plot
An interactive PyQt6 + Matplotlib plotting tool for CSV, SMV, and CAN bus log files.
Features
Supported File Formats
| Format | Description |
|---|---|
.csv / .smv |
Comma or semicolon delimited data (auto-detected) |
.mf4 / .mf4z |
ASAM MDF v4 measurement data (via asammdf) |
.blf |
CAN bus binary log |
.trc |
CAN bus trace log |
.asc |
CAN bus ASCII log |
.dbc |
CAN database for signal decoding (required with BLF/TRC/ASC) |
- Auto-detects
Time/timestampcolumns as the default X axis - CAN signals are forward-fill interpolated and named as
Message.Signal
Plot Interaction
- Shared X axis across all subplots with linked panning and zooming
- Secondary Y axis support per series
- Double-click a subplot to edit its series, or right-click for a context menu
- Measure cursors — two draggable vertical cursors with a live delta table
- Expression evaluator — create computed series from math expressions (e.g.
sin("series_A") + "series_B" * 2) - Multi-file merge — overlay series from different files, each in its own tab
- X axis switching — reassign the X column without losing subplot configuration
- Per-series properties (label, color, linewidth, linestyle, marker) persisted across all redraws
- Live mouse coordinates in the status bar
Toolbar
| Button | Action |
|---|---|
| Home | Auto-fit all axes |
| Back / Forward | Navigate view history |
| Pan | Pan mode |
| Zoom | Zoom rectangle mode |
| Customize | Matplotlib per-curve property editor |
| Save | Export figure to file |
| Add subplot | Open the series selector |
| Fit Y | Auto-fit Y axis keeping current X range |
| Measure | Toggle measure cursors |
| X axis | Select X axis column |
Menus
- File → Open (
Ctrl+O) — open one or more files (multi-select) - File → Merge (
Ctrl+M) — append files to the current session - Style → Customize plot style — preset, line mode, marker, text size, grid, legend
- Style → Theme — Dark / Light (icons swap automatically)
Right-Click Context Menu
- Add subplot above / below
- Delete subplot
- Legend: show/hide, position (14 options), orientation, text size
- Line style: plot / step
Style Presets
Four built-in presets: Default, Style 1, IEEE, Other.
Installation
From PyPI (recommended)
Install the released package from PyPI:
pip install toucan-plot
Usage
# Open a CSV file
toucan-plot data.csv
# Open an MF4 measurement file
toucan-plot recording.mf4
# Open a CAN log with DBC decoding
toucan-plot recording.blf signals.dbc
# Open multiple files (merge mode)
toucan-plot file1.csv file2.csv
# Launch without files
toucan-plot
Requirements
- Python ≥ 3.11
- PyQt6
- Matplotlib
- NumPy
- pyqtdarktheme
- SciencePlots
- python-can (for CAN log files)
- cantools (for DBC decoding)
- asammdf (for MF4 files)
License
MIT
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
toucan_plot-0.2.3.tar.gz
(486.1 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
toucan_plot-0.2.3-py3-none-any.whl
(492.9 kB
view details)
File details
Details for the file toucan_plot-0.2.3.tar.gz.
File metadata
- Download URL: toucan_plot-0.2.3.tar.gz
- Upload date:
- Size: 486.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1183b768b4e2216ee69f54825673132f804463a7e8ed9b91b1fc831142f856cf
|
|
| MD5 |
0e34b74d8f90f3b1357deedb2b9be4d7
|
|
| BLAKE2b-256 |
f07467f911b4b7bd06988bf7110fadf497b0900816b7051ea47eeb4a374cba29
|
File details
Details for the file toucan_plot-0.2.3-py3-none-any.whl.
File metadata
- Download URL: toucan_plot-0.2.3-py3-none-any.whl
- Upload date:
- Size: 492.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0a4a8676612718fa3a6f2f72cf2094eaac8b5a15cc165327c51990f745c01921
|
|
| MD5 |
217f2f2b9f0756c779014c29117b75a3
|
|
| BLAKE2b-256 |
f8b94c64e0294dc0252297ac0fd9304029a4514224fb853ad9e2852da1870d97
|