Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@ jobs:
dotnet restore src/Matplotlib.Interactive/Matplotlib.Interactive.fsproj
dotnet restore src/Matplotlib.Mcp/Matplotlib.Mcp.fsproj
dotnet restore src/Matplotlib.DataFrame/Matplotlib.DataFrame.fsproj
dotnet restore src/Matplotlib.Reports/Matplotlib.Reports.fsproj

# pack builds and packs in one step. We do NOT pass --no-build: the
# single-package bundling target (CopyProjectReferencesToPackage) resolves
Expand All @@ -49,7 +48,6 @@ jobs:
dotnet pack src/Matplotlib.Interactive/Matplotlib.Interactive.fsproj -c Release --no-restore --output . -p:Version=$VERSION
dotnet pack src/Matplotlib.Mcp/Matplotlib.Mcp.fsproj -c Release --no-restore --output . -p:Version=$VERSION
dotnet pack src/Matplotlib.DataFrame/Matplotlib.DataFrame.fsproj -c Release --no-restore --output . -p:Version=$VERSION
dotnet pack src/Matplotlib.Reports/Matplotlib.Reports.fsproj -c Release --no-restore --output . -p:Version=$VERSION

- name: Push to nuget.org
env:
Expand Down
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,14 @@ may contain breaking changes.
actively-developed successor to the now-deprecated .NET Interactive / Polyglot
Notebooks ([#1](https://github.com/gnrkr789/dotnet-matplotlib/issues/1)).

### Changed

- **Folded `DotnetMatplotlib.Reports` into the core `DotnetMatplotlib` package.** The
`Report` type (namespace `Matplotlib.Reports`) needs nothing beyond the core library,
so it no longer ships as a separate package — trimming the published set to four.
**Migration:** drop the `DotnetMatplotlib.Reports` package reference; `Report` now
comes from `DotnetMatplotlib`, and `open Matplotlib.Reports` is unchanged.

## [0.0.9] — 2026-06-20

### Changed — ⚠️ BREAKING
Expand Down
1 change: 0 additions & 1 deletion DotnetMatplotlib.slnx
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
<Project Path="src/Matplotlib.Interactive/Matplotlib.Interactive.fsproj" />
<Project Path="src/Matplotlib.Mcp/Matplotlib.Mcp.fsproj" />
<Project Path="src/Matplotlib.DataFrame/Matplotlib.DataFrame.fsproj" />
<Project Path="src/Matplotlib.Reports/Matplotlib.Reports.fsproj" />
</Folder>
<Folder Name="/tests/">
<Project Path="tests/Matplotlib.Tests/Matplotlib.Tests.fsproj" />
Expand Down
2 changes: 1 addition & 1 deletion PORTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ and is not part of this repository (it is git-ignored).
| 2026-06-06 | 27 | Model Context Protocol server (new capability) | `Matplotlib.Mcp` (.NET tool `DotnetMatplotlib.Mcp`, command `matplotlib-mcp`) | MCP server exposing `plot_line`/`scatter`/`bar`/`heatmap` tools that render to PNG/SVG/PDF for AI agents (`ModelContextProtocol` SDK, stdio transport) |
| 2026-06-06 | 28 | Browser rendering (Blazor WebAssembly) | `samples/BlazorDemo` | the pure-managed library runs in the browser via .NET WASM, rendering plots as inline SVG with no JS/native deps; implicit FSharp.Core floor lowered to 8.0.400 to avoid consumer NU1605 downgrades |
| 2026-06-07 | 29 | `pandas.DataFrame.plot` | `Matplotlib.DataFrame` (package `DotnetMatplotlib.DataFrame`) | `Microsoft.Data.Analysis.DataFrame` extension methods `PlotLine`/`PlotScatter`/`PlotBar`/`PlotHist` returning a `Plt`; usable from C# and F# |
| 2026-06-07 | 30 | server-side reporting (new capability) | `Matplotlib.Reports` (package `DotnetMatplotlib.Reports`) | composable multi-panel `Report` → SVG/PNG/PDF; pure-managed with zero native dependencies, deterministic byte-reproducible vector output, and a `Sha256()` fingerprint for audit/compliance |
| 2026-06-07 | 30 | server-side reporting (new capability) | `Matplotlib/Report` (in the core `DotnetMatplotlib` package) | composable multi-panel `Report` → SVG/PNG/PDF; pure-managed with zero native dependencies, deterministic byte-reproducible vector output, and a `Sha256()` fingerprint for audit/compliance. Originally a separate `DotnetMatplotlib.Reports` package, since folded into core (no extra dependencies) |
| 2026-06-15 | 30 | accuracy corrections (`colors.Colormap.__call__`, `_cm._jet_data`/`_hot_data`, `ticker.AutoMinorLocator`, mpl2014 contour saddles, `mlab.GaussianKDE`, `axes.scatter` `s`, `markers._set_star`, `colors.to_rgba` `CN`) | `Primitives/{Colormap,ColorResolver}`, `Domain/Axes` (`minorTicks`, `marchingSquares`, `Violinplot`, `Scatter`), `Artists/Line2D` | colormap sampling now matches matplotlib's quantized `int(t·N)` flat lookup (no neighbour blending); `jet`/`hot` rebuilt from the exact per-channel `_jet_data`/`_hot_data` segments; `AutoMinorLocator` subdivisions use `round(mantissa) ∈ {1,5,10}`; contour saddle cells (5/10) disambiguated by the cell-centre mean; violin KDE uses Scott's factor with sample variance (ddof = 1) over a 100-point grid; `scatter` `s` is now a points² area (diameter = √s, default 36); star marker inner-radius ratio 0.381966; only the uppercase `CN` cycle form resolves to the property cycle (`'c'` stays cyan) |
| 2026-06-15 | 31 | completing partial plot ports (`axes.scatter` `c`/`cmap`/array-`s`, `axes.hist`, `axes.errorbar` `capsize`, `axes.fill_betweenx`) | `Domain/Axes` (`Scatter`, `Hist`, `Errorbar`, `FillBetweenx`), `Artists/Line2D` (per-point `MarkerColors`/`MarkerSizes`), `Matplotlib/Plt`, `samples/Gallery` | `scatter` maps a numeric `c` array through a colormap + `Normalize` (default viridis) to per-point colors and accepts a per-point `sizes` array (areas → √ diameters); 1-D `hist` (equal-width bins, `range`, `density`, edge-aligned bars on a sticky baseline) returning heights + edges; `errorbar` renders caps as `_`/`|` markers sized by `capsize`; `fill_betweenx` mirrors `fill_between`; Gallery renders demos for each (`scatter_colormap`/`hist`/`fill_betweenx`/`colormaps`/`errorbar` PNGs) |
| 2026-06-15 | 32 | new chart types & axis control (`axes.stackplot`, `vlines`/`hlines`, `pie`, `set_aspect('equal')`, `axis('off')`) | `Domain/Axes` (`Stackplot`, `Vlines`, `Hlines`, `Pie`, `SetAspect`, `SetAxisOff`, `YTicksVisible`, equal-aspect in `BuildContext`), `Matplotlib/Plt` (`Axis`), `samples/Gallery` | stacked cumulative areas; vertical/horizontal line segments; `pie` wedges (flattened polygon arcs) with white separators; `set_aspect('equal')` shrinks the axes box to equal pixels-per-(scaled)-unit (adjustable='box', default `auto` unchanged), so `pie` is round; `axis('off')` hides ticks + spines; Gallery `stackplot`/`vlines`/`pie` PNGs |
Expand Down
11 changes: 4 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -166,9 +166,10 @@ title or choose the output format. The same extension methods work from C#.

## Reports (server-side, deterministic)

`DotnetMatplotlib.Reports` composes multi-panel reports — a grid of titled charts
under a report title — and renders them to SVG / PNG / PDF. It is built for
server-side and regulated / cloud-native use:
The core `DotnetMatplotlib` package includes a `Report` type (namespace
`Matplotlib.Reports`) that composes multi-panel reports — a grid of titled charts under a
report title — and renders them to SVG / PNG / PDF. Built for server-side and regulated /
cloud-native use:

- **Pure-managed, zero native dependencies** — it builds and runs on Linux (the
CI builds and tests it there) and needs no UI or native graphics components.
Expand All @@ -177,10 +178,6 @@ server-side and regulated / cloud-native use:
vector output, so a report can be checksummed (`report.Sha256()`) for audit
trails, change detection and compliance.

```bash
dotnet add package DotnetMatplotlib.Reports
```

```fsharp
open Matplotlib.Reports

Expand Down
9 changes: 5 additions & 4 deletions nuget/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -78,10 +78,11 @@ package as an extension. For legacy .NET Interactive / Polyglot, add

## Reports (server-side, deterministic)

`DotnetMatplotlib.Reports` composes multi-panel SVG/PNG/PDF reports for
server-side use: pure-managed with zero native dependencies (builds and tests on
Linux; SVG and PDF need no system fonts) and **byte-reproducible** output that can
be checksummed (`report.Sha256()`) for audit and compliance.
The core package includes a `Report` type (`open Matplotlib.Reports`) that composes
multi-panel SVG/PNG/PDF reports for server-side use: pure-managed with zero native
dependencies (builds and tests on Linux; SVG and PDF need no system fonts) and
**byte-reproducible** output that can be checksummed (`report.Sha256()`) for audit and
compliance.

## AI agents (MCP)

Expand Down
23 changes: 0 additions & 23 deletions src/Matplotlib.Reports/Matplotlib.Reports.fsproj

This file was deleted.

1 change: 1 addition & 0 deletions src/Matplotlib/Matplotlib.fsproj
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@

<ItemGroup>
<Compile Include="Plt.fs" />
<Compile Include="Report.fs" />
</ItemGroup>

<ItemGroup>
Expand Down
File renamed without changes.
1 change: 0 additions & 1 deletion tests/Matplotlib.Tests/Matplotlib.Tests.fsproj
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,6 @@
<ProjectReference Include="..\..\src\Matplotlib.Interactive\Matplotlib.Interactive.fsproj" />
<ProjectReference Include="..\..\src\Matplotlib.Mcp\Matplotlib.Mcp.fsproj" />
<ProjectReference Include="..\..\src\Matplotlib.DataFrame\Matplotlib.DataFrame.fsproj" />
<ProjectReference Include="..\..\src\Matplotlib.Reports\Matplotlib.Reports.fsproj" />
</ItemGroup>

</Project>
Loading