Skip to content

Commit f6aa4fd

Browse files
committed
2026-03-05 v0.0.17 — HTML dashboard generator, viz module polish
1 parent 1a19747 commit f6aa4fd

22 files changed

Lines changed: 1342 additions & 25 deletions

API_SPEC.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -731,6 +731,28 @@ analysisReport(
731731
) -> go.Figure # 2x2: DNA radar (top-left) + feature bars (top-right) + difficulty indicator (bottom)
732732
```
733733

734+
### HTML Dashboard
735+
736+
```python
737+
from vectrix.viz import dashboard
738+
739+
dashboard(
740+
forecast=None, # EasyForecastResult | None
741+
analysis=None, # EasyAnalysisResult | None
742+
comparison=None, # pd.DataFrame | None — from compare()
743+
historical=None, # pd.DataFrame | None
744+
title="Vectrix Report", # str — custom report title
745+
theme="dark" # str — 'dark' or 'light'
746+
) -> DashboardResult # Self-contained HTML report
747+
```
748+
749+
**DashboardResult methods:**
750+
- `.show()` — display inline (Jupyter) or open browser (terminal)
751+
- `.save(path)` — save to HTML file
752+
- `.html` — raw HTML string
753+
754+
**Report sections:** Overview KPIs → Data Profile (DNA) → Forecast Results (metrics + model comparison) → Visualizations (forecast chart + DNA radar)
755+
734756
### Theme Utilities
735757

736758
```python

CHANGELOG.md

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,35 @@ All notable changes to Vectrix will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## [0.0.17] - 2026-03-05
9+
10+
HTML dashboard generator and visualization module polish.
11+
12+
### Added
13+
14+
**HTML Dashboard (`vectrix.viz.dashboard`)**
15+
- `dashboard()` function generates self-contained HTML reports with embedded Plotly charts
16+
- shadcn/ui dark theme design tokens — 3-layer brightness, transparency borders, monochrome palette
17+
- Report narrative flow: Overview → Data Profile → Forecast Results → Visualizations
18+
- Vectrix brand icon (base64 embedded) and gradient wordmark in header
19+
- Custom title support via `title` parameter
20+
- `DashboardResult` class with `.show()` (Jupyter inline / browser), `.save(path)`, `.html`
21+
- Terminal progress feedback via stderr during dashboard generation
22+
- Data Profile section with DNA feature bars, descriptive statistics, key insights, recommended models
23+
- Forecast Results section with accuracy KPIs and integrated model comparison table
24+
- Partial report support — any combination of forecast/analysis/comparison/historical
25+
26+
### Changed
27+
28+
- `theme.py`: HEATMAP_COLORSCALE updated to 5-step monochrome (dark green → teal → cyan → violet → dark purple)
29+
- Removed unused imports across viz module (COLORS in charts.py, report.py, dashboard.py)
30+
- Fixed extraneous f-string prefixes in report.py
31+
32+
### Documentation
33+
34+
- `07_visualization.md`: Added HTML Dashboard section with basic usage, custom title, save, partial reports, terminal progress
35+
- `API_SPEC.md`: Added `dashboard()` function signature, `DashboardResult` methods, report structure
36+
837
## [0.0.16] - 2026-03-05
938

1039
Code quality and architecture cleanup release — eliminates MODEL_INFO indirection layer, enforces registry as single source of truth for all model metadata, fixes ETSModel refit bug, and adds refit contract tests.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "vectrix"
3-
version = "0.0.16"
3+
version = "0.0.17"
44
edition = "2021"
55
license-file = "LICENSE"
66

constants.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"version": "0.0.16",
2+
"version": "0.0.17",
33
"rustFunctions": 29,
44
"testCount": 603,
55
"modelCount": "30+",

docs/overrides/home.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
<section class="vx-hero">
1212
<div class="vx-hero-badge">
1313
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"></polygon></svg>
14-
v0.0.16 — Built-in Rust Engine
14+
v0.0.17 — Built-in Rust Engine
1515
</div>
1616
<h1 class="vx-hero-title">
1717
Time Series Forecasting<br>

docs/tutorials/07_visualization.md

Lines changed: 85 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -340,9 +340,92 @@ fig.write_json("forecast.json")
340340

341341
**Note:** `write_image()` requires the `kaleido` package: `pip install kaleido`.
342342

343-
## Complete Dashboard Example
343+
## HTML Dashboard
344344

345-
Build a full analysis dashboard by combining multiple charts:
345+
The `dashboard()` function generates a self-contained HTML report that combines all analysis into a single page — data profile, forecast results, model comparison, and interactive charts. No Plotly CDN dependency required in the output.
346+
347+
### Basic Usage
348+
349+
```python
350+
from vectrix import forecast, analyze, compare, loadSample
351+
from vectrix.viz import dashboard
352+
353+
df = loadSample("airline")
354+
355+
result = forecast(df, steps=12)
356+
analysis = analyze(df)
357+
comparison = compare(df, steps=12)
358+
359+
report = dashboard(
360+
forecast=result,
361+
analysis=analysis,
362+
comparison=comparison,
363+
historical=df,
364+
)
365+
report.show() # Opens in browser (terminal) or displays inline (Jupyter)
366+
```
367+
368+
### Custom Title
369+
370+
```python
371+
report = dashboard(
372+
forecast=result,
373+
analysis=analysis,
374+
comparison=comparison,
375+
historical=df,
376+
title="Airline Passengers — Monthly Forecast",
377+
)
378+
report.show()
379+
```
380+
381+
### Save to File
382+
383+
```python
384+
report.save("forecast_report.html")
385+
```
386+
387+
The HTML file is fully self-contained (embedded Plotly JS + inline CSS). Share it by email, upload to a web server, or open locally in any browser.
388+
389+
### Report Sections
390+
391+
The dashboard follows a narrative flow:
392+
393+
1. **Overview** — observation count, frequency, difficulty score, forecast horizon
394+
2. **Data Profile** — DNA feature bars, descriptive statistics, key insights, recommended models
395+
3. **Forecast Results** — accuracy KPIs (MAPE, RMSE, MAE, sMAPE), forecast details, model comparison table
396+
4. **Visualizations** — interactive forecast chart with confidence intervals, DNA radar chart
397+
398+
### Partial Reports
399+
400+
Every parameter is optional. Generate a profile-only report (no forecast):
401+
402+
```python
403+
report = dashboard(analysis=analysis, historical=df, title="Data Profile Report")
404+
report.save("profile.html")
405+
```
406+
407+
Or a forecast-only report (no DNA analysis):
408+
409+
```python
410+
report = dashboard(forecast=result, historical=df, title="Forecast Report")
411+
report.save("forecast.html")
412+
```
413+
414+
### Terminal Progress
415+
416+
When running from a terminal (not Jupyter), the dashboard builder prints progress to stderr:
417+
418+
```
419+
[vectrix] Building header... (0.0s)
420+
[vectrix] Analyzing data profile... (0.0s)
421+
[vectrix] Computing performance metrics... (0.0s)
422+
[vectrix] Rendering charts... (0.2s)
423+
[vectrix] Dashboard ready (0.3s, 48,244 bytes)
424+
```
425+
426+
## Combining Individual Charts
427+
428+
For maximum flexibility, build your own dashboards by combining individual chart functions. Each returns a standard Plotly `go.Figure`:
346429

347430
```python
348431
from vectrix import forecast, analyze, compare, loadSample

landing/src/lib/components/sections/Hero.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
<div class="relative z-10 max-w-4xl mx-auto">
1616
<Badge class="mb-6">
1717
<Zap class="w-3.5 h-3.5" />
18-
v0.0.16 — Built-in Rust Engine
18+
v0.0.17 — Built-in Rust Engine
1919
</Badge>
2020

2121
<h1 class="text-5xl md:text-7xl font-extrabold tracking-tight leading-[1.1] mb-4">

landing/src/routes/+page.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
"description": "Zero-config time series forecasting for Python. 30+ models, one line of code, built-in Rust engine.",
4242
"url": "https://eddmpython.github.io/vectrix/",
4343
"downloadUrl": "https://pypi.org/project/vectrix/",
44-
"softwareVersion": "0.0.16",
44+
"softwareVersion": "0.0.17",
4545
"author": { "@type": "Person", "name": "eddmpython", "url": "https://github.com/eddmpython" },
4646
"offers": { "@type": "Offer", "price": "0", "priceCurrency": "USD" },
4747
"license": "https://opensource.org/licenses/MIT",

landing/static/llms-full.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
Vectrix is a Python library for time series forecasting. It evaluates 30+ statistical models (ETS, ARIMA, Theta, CES, DOT, MSTL, TBATS, GARCH, and more), validates each on a holdout set, and returns the best one with 95% confidence intervals — in a single function call.
66

7-
- Version: 0.0.16
7+
- Version: 0.0.17
88
- License: MIT
99
- Python: 3.10+
1010
- Dependencies: NumPy, pandas, SciPy (only 3)

llms-full.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
> Zero-config time series forecasting library for Python. Automatic model selection with built-in Rust engine (29 accelerated functions), adaptive intelligence, full regression suite, and business analytics.
44

5-
- Version: 0.0.16
5+
- Version: 0.0.17
66
- Python: >=3.10
77
- Core deps: numpy>=1.24, pandas>=2.0, scipy>=1.10
88
- Install: `pip install vectrix`

0 commit comments

Comments
 (0)