toucan-plot 0.2.0__tar.gz → 0.2.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- toucan_plot-0.2.2/PKG-INFO +130 -0
- {toucan_plot-0.2.0 → toucan_plot-0.2.2}/README.md +3 -7
- {toucan_plot-0.2.0 → toucan_plot-0.2.2}/pyproject.toml +2 -1
- toucan_plot-0.2.2/src/toucan_plot.egg-info/PKG-INFO +130 -0
- toucan_plot-0.2.0/PKG-INFO +0 -16
- toucan_plot-0.2.0/src/toucan_plot.egg-info/PKG-INFO +0 -16
- {toucan_plot-0.2.0 → toucan_plot-0.2.2}/LICENSE +0 -0
- {toucan_plot-0.2.0 → toucan_plot-0.2.2}/setup.cfg +0 -0
- {toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot/__main__.py +0 -0
- {toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot/assets/adjustments-dark.svg +0 -0
- {toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot/assets/adjustments-light.svg +0 -0
- {toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot/assets/arrow-autofit-height-dark.svg +0 -0
- {toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot/assets/arrow-autofit-height-light.svg +0 -0
- {toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot/assets/arrow-narrow-left-dark.svg +0 -0
- {toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot/assets/arrow-narrow-left-light.svg +0 -0
- {toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot/assets/arrow-narrow-right-dark.svg +0 -0
- {toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot/assets/arrow-narrow-right-light.svg +0 -0
- {toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot/assets/device-floppy-dark.svg +0 -0
- {toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot/assets/device-floppy-light.svg +0 -0
- {toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot/assets/hand-stop-dark.svg +0 -0
- {toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot/assets/hand-stop-light.svg +0 -0
- {toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot/assets/home-dark.svg +0 -0
- {toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot/assets/home-light.svg +0 -0
- {toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot/assets/ico/toucan-plot.ico +0 -0
- {toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot/assets/layout-grid-add-dark.svg +0 -0
- {toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot/assets/layout-grid-add-light.svg +0 -0
- {toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot/assets/math-function-dark.svg +0 -0
- {toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot/assets/math-function-light.svg +0 -0
- {toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot/assets/ruler-measure-dark.svg +0 -0
- {toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot/assets/ruler-measure-light.svg +0 -0
- {toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot/assets/zoom-dark.svg +0 -0
- {toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot/assets/zoom-light.svg +0 -0
- {toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot/main.py +0 -0
- {toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot/utils/__init__.py +0 -0
- {toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot/utils/loaders.py +0 -0
- {toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot/utils/styles.py +0 -0
- {toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot.egg-info/SOURCES.txt +0 -0
- {toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot.egg-info/dependency_links.txt +0 -0
- {toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot.egg-info/entry_points.txt +0 -0
- {toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot.egg-info/requires.txt +0 -0
- {toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot.egg-info/top_level.txt +0 -0
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: toucan-plot
|
|
3
|
+
Version: 0.2.2
|
|
4
|
+
Summary: A versatile PyQt6 and Matplotlib-based plotting tool for CSV and SMV data files.
|
|
5
|
+
License-Expression: MIT
|
|
6
|
+
Requires-Python: >=3.11
|
|
7
|
+
Description-Content-Type: text/markdown
|
|
8
|
+
License-File: LICENSE
|
|
9
|
+
Requires-Dist: pyqt6>=6.0
|
|
10
|
+
Requires-Dist: matplotlib>=3.0
|
|
11
|
+
Requires-Dist: numpy>=1.20
|
|
12
|
+
Requires-Dist: pyqtdarktheme>=2.1.0
|
|
13
|
+
Requires-Dist: scienceplots>=2.2.1
|
|
14
|
+
Requires-Dist: python-can>=4.0
|
|
15
|
+
Requires-Dist: cantools>=39.0
|
|
16
|
+
Requires-Dist: asammdf>=7.0
|
|
17
|
+
Dynamic: license-file
|
|
18
|
+
|
|
19
|
+
# Toucan-Plot
|
|
20
|
+
|
|
21
|
+
An interactive PyQt6 + Matplotlib plotting tool for CSV, SMV, and CAN bus log files.
|
|
22
|
+
|
|
23
|
+

|
|
24
|
+

|
|
25
|
+
|
|
26
|
+
## Features
|
|
27
|
+
|
|
28
|
+
### Supported File Formats
|
|
29
|
+
|
|
30
|
+
| Format | Description |
|
|
31
|
+
|--------|-------------|
|
|
32
|
+
| `.csv` / `.smv` | Comma or semicolon delimited data (auto-detected) |
|
|
33
|
+
| `.mf4` / `.mf4z` | ASAM MDF v4 measurement data (via asammdf) |
|
|
34
|
+
| `.blf` | CAN bus binary log |
|
|
35
|
+
| `.trc` | CAN bus trace log |
|
|
36
|
+
| `.asc` | CAN bus ASCII log |
|
|
37
|
+
| `.dbc` | CAN database for signal decoding (required with BLF/TRC/ASC) |
|
|
38
|
+
|
|
39
|
+
- Auto-detects `Time` / `timestamp` columns as the default X axis
|
|
40
|
+
- CAN signals are forward-fill interpolated and named as `Message.Signal`
|
|
41
|
+
|
|
42
|
+
### Plot Interaction
|
|
43
|
+
|
|
44
|
+
- **Shared X axis** across all subplots with linked panning and zooming
|
|
45
|
+
- **Secondary Y axis** support per series
|
|
46
|
+
- **Double-click** a subplot to edit its series, or **right-click** for a context menu
|
|
47
|
+
- **Measure cursors** — two draggable vertical cursors with a live delta table
|
|
48
|
+
- **Expression evaluator** — create computed series from math expressions (e.g. `sin("series_A") + "series_B" * 2`)
|
|
49
|
+
- **Multi-file merge** — overlay series from different files, each in its own tab
|
|
50
|
+
- **X axis switching** — reassign the X column without losing subplot configuration
|
|
51
|
+
- **Per-series properties** (label, color, linewidth, linestyle, marker) persisted across all redraws
|
|
52
|
+
- Live mouse coordinates in the status bar
|
|
53
|
+
|
|
54
|
+
### Toolbar
|
|
55
|
+
|
|
56
|
+
| Button | Action |
|
|
57
|
+
|--------|--------|
|
|
58
|
+
| Home | Auto-fit all axes |
|
|
59
|
+
| Back / Forward | Navigate view history |
|
|
60
|
+
| Pan | Pan mode |
|
|
61
|
+
| Zoom | Zoom rectangle mode |
|
|
62
|
+
| Customize | Matplotlib per-curve property editor |
|
|
63
|
+
| Save | Export figure to file |
|
|
64
|
+
| Add subplot | Open the series selector |
|
|
65
|
+
| Fit Y | Auto-fit Y axis keeping current X range |
|
|
66
|
+
| Measure | Toggle measure cursors |
|
|
67
|
+
| X axis | Select X axis column |
|
|
68
|
+
|
|
69
|
+
### Menus
|
|
70
|
+
|
|
71
|
+
- **File → Open** (`Ctrl+O`) — open one or more files (multi-select)
|
|
72
|
+
- **File → Merge** (`Ctrl+M`) — append files to the current session
|
|
73
|
+
- **Style → Customize plot style** — preset, line mode, marker, text size, grid, legend
|
|
74
|
+
- **Style → Theme** — Dark / Light (icons swap automatically)
|
|
75
|
+
|
|
76
|
+
### Right-Click Context Menu
|
|
77
|
+
|
|
78
|
+
- Add subplot above / below
|
|
79
|
+
- Delete subplot
|
|
80
|
+
- Legend: show/hide, position (14 options), orientation, text size
|
|
81
|
+
- Line style: plot / step
|
|
82
|
+
|
|
83
|
+
### Style Presets
|
|
84
|
+
|
|
85
|
+
Four built-in presets: **Default**, **Style 1**, **IEEE**, **Other**.
|
|
86
|
+
|
|
87
|
+
## Installation
|
|
88
|
+
|
|
89
|
+
### From PyPI (recommended)
|
|
90
|
+
|
|
91
|
+
Install the released package from PyPI:
|
|
92
|
+
|
|
93
|
+
```shell
|
|
94
|
+
pip install toucan-plot
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
## Usage
|
|
98
|
+
|
|
99
|
+
```shell
|
|
100
|
+
# Open a CSV file
|
|
101
|
+
toucan-plot data.csv
|
|
102
|
+
|
|
103
|
+
# Open an MF4 measurement file
|
|
104
|
+
toucan-plot recording.mf4
|
|
105
|
+
|
|
106
|
+
# Open a CAN log with DBC decoding
|
|
107
|
+
toucan-plot recording.blf signals.dbc
|
|
108
|
+
|
|
109
|
+
# Open multiple files (merge mode)
|
|
110
|
+
toucan-plot file1.csv file2.csv
|
|
111
|
+
|
|
112
|
+
# Launch without files
|
|
113
|
+
toucan-plot
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
## Requirements
|
|
117
|
+
|
|
118
|
+
- Python ≥ 3.11
|
|
119
|
+
- PyQt6
|
|
120
|
+
- Matplotlib
|
|
121
|
+
- NumPy
|
|
122
|
+
- pyqtdarktheme
|
|
123
|
+
- SciencePlots
|
|
124
|
+
- python-can (for CAN log files)
|
|
125
|
+
- cantools (for DBC decoding)
|
|
126
|
+
- asammdf (for MF4 files)
|
|
127
|
+
|
|
128
|
+
## License
|
|
129
|
+
|
|
130
|
+
MIT
|
|
@@ -68,16 +68,12 @@ Four built-in presets: **Default**, **Style 1**, **IEEE**, **Other**.
|
|
|
68
68
|
|
|
69
69
|
## Installation
|
|
70
70
|
|
|
71
|
-
### From
|
|
71
|
+
### From PyPI (recommended)
|
|
72
72
|
|
|
73
|
-
|
|
74
|
-
pip install .
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
### With uv
|
|
73
|
+
Install the released package from PyPI:
|
|
78
74
|
|
|
79
75
|
```shell
|
|
80
|
-
|
|
76
|
+
pip install toucan-plot
|
|
81
77
|
```
|
|
82
78
|
|
|
83
79
|
## Usage
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "toucan-plot"
|
|
3
|
-
version = "0.2.
|
|
3
|
+
version = "0.2.2"
|
|
4
4
|
description = "A versatile PyQt6 and Matplotlib-based plotting tool for CSV and SMV data files."
|
|
5
5
|
license = "MIT"
|
|
6
|
+
readme = { file = "README.md", content-type = "text/markdown" }
|
|
6
7
|
requires-python = ">=3.11"
|
|
7
8
|
dependencies = [
|
|
8
9
|
"pyqt6>=6.0",
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: toucan-plot
|
|
3
|
+
Version: 0.2.2
|
|
4
|
+
Summary: A versatile PyQt6 and Matplotlib-based plotting tool for CSV and SMV data files.
|
|
5
|
+
License-Expression: MIT
|
|
6
|
+
Requires-Python: >=3.11
|
|
7
|
+
Description-Content-Type: text/markdown
|
|
8
|
+
License-File: LICENSE
|
|
9
|
+
Requires-Dist: pyqt6>=6.0
|
|
10
|
+
Requires-Dist: matplotlib>=3.0
|
|
11
|
+
Requires-Dist: numpy>=1.20
|
|
12
|
+
Requires-Dist: pyqtdarktheme>=2.1.0
|
|
13
|
+
Requires-Dist: scienceplots>=2.2.1
|
|
14
|
+
Requires-Dist: python-can>=4.0
|
|
15
|
+
Requires-Dist: cantools>=39.0
|
|
16
|
+
Requires-Dist: asammdf>=7.0
|
|
17
|
+
Dynamic: license-file
|
|
18
|
+
|
|
19
|
+
# Toucan-Plot
|
|
20
|
+
|
|
21
|
+
An interactive PyQt6 + Matplotlib plotting tool for CSV, SMV, and CAN bus log files.
|
|
22
|
+
|
|
23
|
+

|
|
24
|
+

|
|
25
|
+
|
|
26
|
+
## Features
|
|
27
|
+
|
|
28
|
+
### Supported File Formats
|
|
29
|
+
|
|
30
|
+
| Format | Description |
|
|
31
|
+
|--------|-------------|
|
|
32
|
+
| `.csv` / `.smv` | Comma or semicolon delimited data (auto-detected) |
|
|
33
|
+
| `.mf4` / `.mf4z` | ASAM MDF v4 measurement data (via asammdf) |
|
|
34
|
+
| `.blf` | CAN bus binary log |
|
|
35
|
+
| `.trc` | CAN bus trace log |
|
|
36
|
+
| `.asc` | CAN bus ASCII log |
|
|
37
|
+
| `.dbc` | CAN database for signal decoding (required with BLF/TRC/ASC) |
|
|
38
|
+
|
|
39
|
+
- Auto-detects `Time` / `timestamp` columns as the default X axis
|
|
40
|
+
- CAN signals are forward-fill interpolated and named as `Message.Signal`
|
|
41
|
+
|
|
42
|
+
### Plot Interaction
|
|
43
|
+
|
|
44
|
+
- **Shared X axis** across all subplots with linked panning and zooming
|
|
45
|
+
- **Secondary Y axis** support per series
|
|
46
|
+
- **Double-click** a subplot to edit its series, or **right-click** for a context menu
|
|
47
|
+
- **Measure cursors** — two draggable vertical cursors with a live delta table
|
|
48
|
+
- **Expression evaluator** — create computed series from math expressions (e.g. `sin("series_A") + "series_B" * 2`)
|
|
49
|
+
- **Multi-file merge** — overlay series from different files, each in its own tab
|
|
50
|
+
- **X axis switching** — reassign the X column without losing subplot configuration
|
|
51
|
+
- **Per-series properties** (label, color, linewidth, linestyle, marker) persisted across all redraws
|
|
52
|
+
- Live mouse coordinates in the status bar
|
|
53
|
+
|
|
54
|
+
### Toolbar
|
|
55
|
+
|
|
56
|
+
| Button | Action |
|
|
57
|
+
|--------|--------|
|
|
58
|
+
| Home | Auto-fit all axes |
|
|
59
|
+
| Back / Forward | Navigate view history |
|
|
60
|
+
| Pan | Pan mode |
|
|
61
|
+
| Zoom | Zoom rectangle mode |
|
|
62
|
+
| Customize | Matplotlib per-curve property editor |
|
|
63
|
+
| Save | Export figure to file |
|
|
64
|
+
| Add subplot | Open the series selector |
|
|
65
|
+
| Fit Y | Auto-fit Y axis keeping current X range |
|
|
66
|
+
| Measure | Toggle measure cursors |
|
|
67
|
+
| X axis | Select X axis column |
|
|
68
|
+
|
|
69
|
+
### Menus
|
|
70
|
+
|
|
71
|
+
- **File → Open** (`Ctrl+O`) — open one or more files (multi-select)
|
|
72
|
+
- **File → Merge** (`Ctrl+M`) — append files to the current session
|
|
73
|
+
- **Style → Customize plot style** — preset, line mode, marker, text size, grid, legend
|
|
74
|
+
- **Style → Theme** — Dark / Light (icons swap automatically)
|
|
75
|
+
|
|
76
|
+
### Right-Click Context Menu
|
|
77
|
+
|
|
78
|
+
- Add subplot above / below
|
|
79
|
+
- Delete subplot
|
|
80
|
+
- Legend: show/hide, position (14 options), orientation, text size
|
|
81
|
+
- Line style: plot / step
|
|
82
|
+
|
|
83
|
+
### Style Presets
|
|
84
|
+
|
|
85
|
+
Four built-in presets: **Default**, **Style 1**, **IEEE**, **Other**.
|
|
86
|
+
|
|
87
|
+
## Installation
|
|
88
|
+
|
|
89
|
+
### From PyPI (recommended)
|
|
90
|
+
|
|
91
|
+
Install the released package from PyPI:
|
|
92
|
+
|
|
93
|
+
```shell
|
|
94
|
+
pip install toucan-plot
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
## Usage
|
|
98
|
+
|
|
99
|
+
```shell
|
|
100
|
+
# Open a CSV file
|
|
101
|
+
toucan-plot data.csv
|
|
102
|
+
|
|
103
|
+
# Open an MF4 measurement file
|
|
104
|
+
toucan-plot recording.mf4
|
|
105
|
+
|
|
106
|
+
# Open a CAN log with DBC decoding
|
|
107
|
+
toucan-plot recording.blf signals.dbc
|
|
108
|
+
|
|
109
|
+
# Open multiple files (merge mode)
|
|
110
|
+
toucan-plot file1.csv file2.csv
|
|
111
|
+
|
|
112
|
+
# Launch without files
|
|
113
|
+
toucan-plot
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
## Requirements
|
|
117
|
+
|
|
118
|
+
- Python ≥ 3.11
|
|
119
|
+
- PyQt6
|
|
120
|
+
- Matplotlib
|
|
121
|
+
- NumPy
|
|
122
|
+
- pyqtdarktheme
|
|
123
|
+
- SciencePlots
|
|
124
|
+
- python-can (for CAN log files)
|
|
125
|
+
- cantools (for DBC decoding)
|
|
126
|
+
- asammdf (for MF4 files)
|
|
127
|
+
|
|
128
|
+
## License
|
|
129
|
+
|
|
130
|
+
MIT
|
toucan_plot-0.2.0/PKG-INFO
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: toucan-plot
|
|
3
|
-
Version: 0.2.0
|
|
4
|
-
Summary: A versatile PyQt6 and Matplotlib-based plotting tool for CSV and SMV data files.
|
|
5
|
-
License-Expression: MIT
|
|
6
|
-
Requires-Python: >=3.11
|
|
7
|
-
License-File: LICENSE
|
|
8
|
-
Requires-Dist: pyqt6>=6.0
|
|
9
|
-
Requires-Dist: matplotlib>=3.0
|
|
10
|
-
Requires-Dist: numpy>=1.20
|
|
11
|
-
Requires-Dist: pyqtdarktheme>=2.1.0
|
|
12
|
-
Requires-Dist: scienceplots>=2.2.1
|
|
13
|
-
Requires-Dist: python-can>=4.0
|
|
14
|
-
Requires-Dist: cantools>=39.0
|
|
15
|
-
Requires-Dist: asammdf>=7.0
|
|
16
|
-
Dynamic: license-file
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: toucan-plot
|
|
3
|
-
Version: 0.2.0
|
|
4
|
-
Summary: A versatile PyQt6 and Matplotlib-based plotting tool for CSV and SMV data files.
|
|
5
|
-
License-Expression: MIT
|
|
6
|
-
Requires-Python: >=3.11
|
|
7
|
-
License-File: LICENSE
|
|
8
|
-
Requires-Dist: pyqt6>=6.0
|
|
9
|
-
Requires-Dist: matplotlib>=3.0
|
|
10
|
-
Requires-Dist: numpy>=1.20
|
|
11
|
-
Requires-Dist: pyqtdarktheme>=2.1.0
|
|
12
|
-
Requires-Dist: scienceplots>=2.2.1
|
|
13
|
-
Requires-Dist: python-can>=4.0
|
|
14
|
-
Requires-Dist: cantools>=39.0
|
|
15
|
-
Requires-Dist: asammdf>=7.0
|
|
16
|
-
Dynamic: license-file
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot/assets/arrow-autofit-height-dark.svg
RENAMED
|
File without changes
|
{toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot/assets/arrow-autofit-height-light.svg
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|