TouCAN-Plot
An interactive PySide6 + 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.13
- PySide6
- Matplotlib
- NumPy
- pyqtdarktheme
- SciencePlots
- python-can (for CAN log files)
- cantools (for DBC decoding)
- asammdf (for MF4 files)
License
MIT
Metadata
Release files for toucan-plot 0.6.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| toucan_plot-0.6.0.tar.gz | 953.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| toucan_plot-0.6.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.9 MB
Release files / toucan_plot-0.6.0.tar.gz
| Download URL | toucan_plot-0.6.0.tar.gz |
|---|---|
| Size | 953.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2c13ebb032b000ad4c1d6e66543a8ec9ddd82b5d63dfcf987b11117094f82779
|
|
BLAKE2b-256 checksum How to use checksums |
b29db6fc79678fd42e81b271ebedcde6a11011526d2053d88d756df85c9c4521
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.14
|
Release files / toucan_plot-0.6.0-py3-none-any.whl
| Download URL | toucan_plot-0.6.0-py3-none-any.whl |
|---|---|
| Size | 960.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
484acf8791f8e0d746943dd3d2dc249be70de3b34e8cf1e03de2eda271cf80ad
|
|
BLAKE2b-256 checksum How to use checksums |
a76fb1b024df0a3c9ce153f5ab83b85f33d1d26b8bb54133488d8b282fafbed6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.14
|