This version removes C# interop from the core F# Plotly.NET library, offloading those implementations directly to the native C# lib Plotly.NET.CSharp:
Milestone link with all the fixed/closed issues
Breaking: Plotly.NET assemblies are no longer strong-named. Maintaining a strong-named build chain has caused recurring friction (see #452, #371, and the broader discussion at StephenCleary/AsyncEx#129) and forced us to maintain a re-packaged signed fork of Giraffe.ViewEngine (giraffe-fsharp/Giraffe.ViewEngine#23). Consumers that still need strong-named binaries can use brutaldev/StrongNameSigner to sign assemblies post-build.
As a consequence, the html dsl dependency switches back from Giraffe.ViewEngine.StrongName 2.0.0-alpha1 to upstream Giraffe.ViewEngine 1.4.0. The namespace is unchanged, so user code is not affected.
-
Bump bundled plotly.js to 2.28.0
-
#441: Encoded typed array support — plotly.js 2.28 introduced a base64 representation for numeric arrays. Plotly.NET supports it for selected trace fields and chart constructors:
-
New
EncodedTypedArraytype (inPlotly.NET) carrying a base64 payload (bdata), a dtype tag (dtype), and an optional shape for multi-dimensional data. Supported dtypes:Float64,Float32,Int32,UInt32,Int16,UInt16,Int8,UInt8,UInt8Clamped. -
Convenience constructors:
EncodedTypedArray.ofFloat64Array,ofFloat32Array,ofInt32Array,ofUInt32Array,ofInt16Array,ofUInt16Array,ofInt8Array,ofUInt8Array,ofUInt8ClampedArray— all accept a 1-D .NET array and an optionalshapeparameter for multi-dimensional layouts. -
Encoded fields added across the trace style modules (
Trace2DStyle,Trace3DStyle,TracePolarStyle,TraceGeoStyle,TraceMapboxStyle,TraceTernaryStyle,TraceCarpetStyle,TraceDomainStyle,TraceSmithStyle), covering data arrays (XEncoded,YEncoded,ZEncoded, etc.), metadata arrays (IdsEncoded,CustomDataEncoded,MultiTextEncoded,SelectedPointsEncoded), error bar arrays (ArrayEncoded,ArrayminusEncoded), and trace-specific fields (e.g.Q1Encoded/MedianEncoded/Q3Encodedon BoxPlot,OpenEncoded/HighEncoded/LowEncoded/CloseEncodedon OHLC/Candlestick,OpacityScaleEncodedon Surface/Volume/IsoSurface,IntensityEncoded/IEncoded/JEncoded/KEncodedon Mesh3D, dimensionValuesEncodedon Splom/ParallelCoord). -
Encoded overloads added to selected F#
Chartroot functions (e.g.Chart.Scatter,Chart.Bar,Chart.Waterfall,Chart.Histogram,Chart.BoxPlot,Chart.Violin,Chart.OHLC,Chart.Candlestick,Chart.Splom,Chart.Histogram2D,Chart.Heatmap,Chart.Contour,Chart.Scatter3D,Chart.Surface,Chart.Mesh3D,Chart.Cone,Chart.StreamTube,Chart.Volume,Chart.IsoSurface,Chart.ScatterPolar,Chart.BarPolar,Chart.ScatterGeo,Chart.ChoroplethMap,Chart.ScatterMapbox,Chart.ChoroplethMapbox,Chart.DensityMapbox,Chart.ScatterTernary,Chart.Carpet,Chart.ScatterCarpet,Chart.ContourCarpet,Chart.ScatterSmith,Chart.Pie,Chart.FunnelArea,Chart.Sunburst,Chart.Treemap,Chart.Icicle) and selected derived convenience helpers (e.g.Chart.Point,Chart.Line,Chart.Spline,Chart.Bubble,Chart.Area,Chart.SplineArea,Chart.StackedArea,Chart.Range,Chart.Funnel,Chart.Histogram,Chart.StackedBar,Chart.PointDensity,Chart.PointPolar,Chart.PointGeo,Chart.PointMapbox,Chart.PointTernary,Chart.PointSmith,Chart.PointCarpet,Chart.Doughnut). -
Shared Sankey node/link objects accept encoded positions, source/target/value, and supported numeric metadata. Encoded values replace corresponding plain values when both are supplied in the same init/style call. Labels remain plain strings.
-
One-dimensional samples do not need a shape; matrix inputs use an explicitly shaped flat payload. Strings, arbitrary objects, decimal, and 64-bit integer encoding are outside the supported dtype set. Image pixels and helpers that compute from plain inputs (such as Pareto, Residual, and AnnotatedHeatmap) have no direct encoded overload.
-
The C# package exposes a selected subset of direct chart conveniences, documented in its release notes and the encoded-array guide. This release does not claim all-chart parity or measured encoding performance gains.
-
-
Sankey node alignment —
StyleParam.SankeyNodeAlignsupports Left, Right, Center, and Justify throughSankeyNodesand the F# / C# chart conveniences. -
Virtual-WebGL — existing
DisplayOptions.AdditionalHeadTagscan load the optional WebGL 1 virtualization script before plotly.js; the encoded-array guide shows the script ordering. -
#500: Internal refactor — split the monolithic
Chart.fsinto per-chart-family files (Chart2D_Scatter.fs,Chart2D_Bar.fs, etc.) for better maintainability. No API changes. -
Set comparison charts — new composite charts for visualizing set membership and intersections (in
ChartComposite):Chart.Venndraws a Venn diagram comparing two or three sets (set1,set2, optionalSet3), annotating each region with its member count. Axes are locked to a 1:1 pixel ratio so the circles always render round, and colors/labels/text font are customizable.Chart.UpSetdraws an UpSet plot for an arbitrary number of sets: an intersection matrix, an intersection-size bar chart, and a set-size bar chart, with optional per-intersection attribute plots viaSetData/SetDataChartsTitle.- Both take plain
#seq<string>/#seq<#seq<string>>set inputs (treated as sets internally; duplicates ignored) and support the standardUseDefaultsparameter.
-
Dev tooling: target framework for build/test projects updated to
net10.0; NuGet dependency updates (Newtonsoft.Json 13.0.4, Deedle 5.0.0, FSharp.Data 8.1.7, FAKE 6.1.4, Microsoft.NET.Test.Sdk 18.x).
Maintenance release to prevent Plotly.NET breaking for users that upgrade the DynamicObj dependency to >=3.0.0. DynamicObj is now pinned to the version range [2.0.0, 3.0.0) until we manage to make Plotly.NET work with the major changes in that lib.
Major release with lots of bug fixes, improvements, and upstream feature additions from plotly.js. Many changes are backwards-incompatible with previous versions.
Milestone link with all the fixed/closed issues
-
Add Chart.Pareto. This contribution started with the fslab hackathon 2023 and was submitted by @rockfaith75 and @smoothdeveloper, thank you!
-
Make Contours setting directly accessible on all supported traces, fixes #426
-
Allow DynamicObj for the args properties of update buttons, fixes #414
-
Expand DisplayOptions to include direct fields for document title, description, charset, and favicon, fixes #374
-
Keep up with plotlyjs 2.x incremental updates. Note that v2.28+ will be on Plotly.NET 6.0, as some major changes are needed for supporting it properly (see #441)
- v2.22:
- v2.23:
- v2.24:
- v2.25:
- v2.26:
- v2.27:
Additional extension package releases::
- Plotly.NET.ImageExport (5.0.1 -> 6.0.0)
- Plotly.NET.Interactive (4.2.0 -> 5.0.0)
- Plotly.NET.CSharp (0.11.1 -> 0.12.0)
This release makes Plotly.NET compatible with LINQPad.
Read more about this on the respective pull request.
Thanks a lot to @Peter-B-.
This is a maintenance release that aims to keep up with plotlyjs 2.x incremental updates.
The only major change is the usage of Giraffe.ViewEngine.StrongName instead of Giraffe.ViewEngine as html dsl. This could be considered as a breaking change, but it's not because the Giraffe.ViewEngine.StrongName package is a drop-in replacement for Giraffe.ViewEngine with the only difference being a signed assembly
-
Keep up with plotlyjs 2.x incremental updates:
- v2.22+ will be on Plotly.NET 5.0, because it introduces breaking changes.
- v2.21:
- v2.20:
- v2.19:
-
misc fixes and improvements:
Additional extension package releases::
- Plotly.NET.ImageExport (4.0.0 -> 5.0.0)
- Plotly.NET.Interactive (4.1.0 -> 4.2.0)
- Plotly.NET.CSharp (0.10.0 -> 0.11.0)
Milestone link with all the fixed/closed issues
-
Add high level arg for base layer style to all mapbox charts
-
Add ShowXAxisRangeSlider argument for Chart.OHLC and Chart.Candlestick
-
Refactor DisplayOptions - An object to control the way Charts are displayed in generated HTML files:
- Add various functions to manipulate DisplayOptions, Refactor DisplayOptions as DynamicObj (again)
- Add
PlotlyJSReferencetype and logic to handle various ways of referencing plotly.js in HTML output:Full: Include the full plotly.js source code. The currently supported plotly.js version is now included as embedded resource in the package. HTML files using this option are self-contained and can be used offline.CDN: The default. uses a script tag in the head of the generated HTML to load plotly.js from a CDN.Require: Use requirejs to load plotly. This option is now used in Plotly.NET.Interactive. Unnecessary usage of require.js is now removed from all other options but this.NoReference: Don't include any plotly.js reference. Useful if you want to embed the output into another page that already references plotly.
-
Keep up with plotlyjs 2.x incremental updates:
- v2.18:
- v2.17:
- v2.16:
- v2.15:
- v2.14:
- v2.13:
- v2.12:
- v2.10:
- v2.9:
- v2.8:
Minor fixes for Object abstractions:
- Use correct Optional Parameter Attributes everywhere. This affects object abstractions for the following objects, but should be backwards compatible:
- Annotation
- LayoutImage
- Pattern
- TableCells
FontSelectionStyle.initnow correctly returns a FontSelectionStyle instead of unit
This release adopts strong assembly naming. This might cause backwards incompatibility and therefore results in an early major version increase. For more insights why we do this, check out the conversation on this issue
Other additions: