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
Release history Release notifications | RSS feed
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.4.1.tar.gz
(942.8 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.4.1-py3-none-any.whl
(950.3 kB
view details)
File details
Details for the file toucan_plot-0.4.1.tar.gz.
File metadata
- Download URL: toucan_plot-0.4.1.tar.gz
- Upload date:
- Size: 942.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
73588b0692b731b90f0ca89fcb4d50b6878decb7da5f5cf9326e77f9f7514813
|
|
| MD5 |
0705e4dcbd01c6023b2682b834c5ca5a
|
|
| BLAKE2b-256 |
7f3748feb3acdfd88a964cb0fb5f1a651e78613aa3955016652cdc64168126e0
|
File details
Details for the file toucan_plot-0.4.1-py3-none-any.whl.
File metadata
- Download URL: toucan_plot-0.4.1-py3-none-any.whl
- Upload date:
- Size: 950.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ee0f9785e9aa20bb1fc606a0d627d60999686fe6b3db851a3c15abb1c9c3b8ed
|
|
| MD5 |
1f24c57d4670e9956e4b2d46549b4ff7
|
|
| BLAKE2b-256 |
fe3bcfbc9316a24352b6b7e9ca7181d69031bd87be1d1f4e82720971c14b1b4e
|