Plotly.NET 6.0.0

dotnet add package Plotly.NET --version 6.0.0
                    
NuGet\Install-Package Plotly.NET -Version 6.0.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Plotly.NET" Version="6.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Plotly.NET" Version="6.0.0" />
                    
Directory.Packages.props
<PackageReference Include="Plotly.NET" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Plotly.NET --version 6.0.0
                    
#r "nuget: Plotly.NET, 6.0.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Plotly.NET@6.0.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Plotly.NET&version=6.0.0
                    
Install as a Cake Addin
#tool nuget:?package=Plotly.NET&version=6.0.0
                    
Install as a Cake Tool

Plotly.NET

Create interactive plotly.js charts in .NET. Plotly.NET provides an F# API for building, styling, combining, and rendering charts, with lower-level access to traces, layouts, and configuration. This is the core library used by the other Plotly.NET packages.

Installation

dotnet add package Plotly.NET --version 6.0.0

The library targets .NET Standard 2.0. For an idiomatic C# API, install Plotly.NET.CSharp as well.

Quick start

In an F# project with the package installed:

open Plotly.NET

let chart =
    Chart.Line(
        x = [ 1; 2; 3; 4 ],
        y = [ 2; 5; 3; 8 ]
    )
    |> Chart.withTitle "My first chart"

chart |> Chart.saveHtml "chart.html"

Open chart.html in a browser to interact with the chart. Use chart |> Chart.show to save a temporary HTML file and open it in your default browser automatically. For an .fsx script, add #r "nuget: Plotly.NET, 6.0.0" before the example.

By default, the HTML loads plotly.js from a CDN and needs an internet connection. See display options for using an embedded or local plotly.js reference.

Documentation and support

Plotly.NET is licensed under the MIT license.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (23)

Showing the top 5 NuGet packages that depend on Plotly.NET:

Package Downloads
Plotly.NET.ImageExport

An easily extensible library to render static images from Plotly.NET charts.

Plotly.NET.CSharp

Native C# bindings for Plotly.NET 📈🚀.

Plotly.NET.Interactive

A .NET Interactive Kernel Extension for displaying Plotly.NET charts.

QuantConnect.Research

QuantConnect LEAN Engine: Research Project - Core implementation for jupyter research environment

BioFSharp.Vis

Data visualization for bioinformatic purposes

GitHub repositories (6)

Showing the top 6 popular GitHub repositories that depend on Plotly.NET:

Repository Stars
QuantConnect/Lean
Lean Algorithmic Trading Engine by QuantConnect (Python, C#)
dotnet/dotnet
Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK.
ASC-Community/AngouriMath
Open-source cross-platform symbolic algebra library for C# and F#. Can be used for both production and research purposes.
bitfaster/BitFaster.Caching
High performance, thread-safe in-memory caching primitives for .NET
Capnode/Algoloop
Windows desktop algo trading with QuantConnect Lean engine.
WhiteBlackGoose/AsmToDelegate
Compile asm code into C# functions on fly!
Version Downloads Last Updated
6.0.0 69 10/29/2026
6.0.0-preview.2 4,453 6/16/2026
6.0.0-preview.1 24,467 7/28/2025
5.1.0 405,640 9/4/2024
5.0.0 526,085 5/27/2024
4.2.0 110,139 8/2/2023
4.1.0 50,190 7/14/2023
4.0.0 119,323 2/24/2023
4.0.0-preview.4 323 2/24/2023
4.0.0-preview.3 412 2/15/2023
4.0.0-preview.2 383 2/10/2023
4.0.0-preview.1 315 2/10/2023
3.0.1 180,355 8/26/2022
3.0.0 30,341 6/15/2022
2.0.0 17,880 4/28/2022
2.0.0-preview.18 1,625 3/4/2022
2.0.0-preview.17 22,294 2/8/2022
2.0.0-preview.16 23,226 11/27/2021
2.0.0-preview.15 2,389 11/16/2021
2.0.0-preview.14 450 11/12/2021
Loading failed

This version [removes C# interop from the core F# Plotly.NET library](https://github.com/plotly/Plotly.NET/issues/457), offloading those implementations directly to the native C# lib Plotly.NET.CSharp:
[Milestone link with all the fixed/closed issues](https://github.com/plotly/Plotly.NET/milestone/8)
Breaking:** Plotly.NET assemblies are no longer strong-named. Maintaining a strong-named build chain has caused recurring friction (see [#452](https://github.com/plotly/Plotly.NET/issues/452), [#371](https://github.com/plotly/Plotly.NET/issues/371), and the broader discussion at [StephenCleary/AsyncEx#129](https://github.com/StephenCleary/AsyncEx/issues/129)) and forced us to maintain a re-packaged signed fork of Giraffe.ViewEngine ([giraffe-fsharp/Giraffe.ViewEngine#23](https://github.com/giraffe-fsharp/Giraffe.ViewEngine/pull/23)). Consumers that still need strong-named binaries can use [brutaldev/StrongNameSigner](https://github.com/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.
- [#504](https://github.com/plotly/Plotly.NET/issues/504): Upgrade DynamicObj to `[8.0.0, 9.0.0)`, raising its transitive FSharp.Core minimum to 10.1.300. No Plotly.NET source adaptations were required. The upgrade includes revised hashing and equality for custom properties containing F# option values; ordinary optional chart arguments are unwrapped before storage.
- Bump bundled plotly.js to **2.28.0**
- [#459](https://github.com/plotly/Plotly.NET/issues/459): **Breaking:** Rename nine `ColorKeyword` cases. The old names have been removed; replace usages and pattern matches using the mapping below. RGB values are unchanged, including `LightSlateGray` and `LightSlateGrey`, which both map to `(119, 136, 153)`.
| Removed name | Replacement |
| --- | --- |
| `Darkolivegreen` | `DarkOliveGreen` |
| `Honeydew` | `HoneyDew` |
| `Hotpink` | `HotPink` |
| `LightAalmon` | `LightSalmon` |
| `LightAeaGreen` | `LightSeaGreen` |
| `LightAkyBlue` | `LightSkyBlue` |
| `LightAlateGray` | `LightSlateGray` |
| `LightslateGrey` | `LightSlateGrey` |
| `Skyblue` | `SkyBlue` |
- [#477](https://github.com/plotly/Plotly.NET/issues/477): Fix tick-font serialization for parallel categories and parallel coordinates charts, and add `StyleParam.Shape.HSpline` for horizontal spline paths in parallel categories plots.
- [#441](https://github.com/plotly/Plotly.NET/issues/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 `EncodedTypedArray` type (in `Plotly.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 optional `shape` parameter 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`/`Q3Encoded` on BoxPlot, `OpenEncoded`/`HighEncoded`/`LowEncoded`/`CloseEncoded` on OHLC/Candlestick, `OpacityScaleEncoded` on Surface/Volume/IsoSurface, `IntensityEncoded`/`IEncoded`/`JEncoded`/`KEncoded` on Mesh3D, dimension `ValuesEncoded` on Splom/ParallelCoord).
- Encoded overloads added to **selected F# `Chart` root 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.SankeyNodeAlign` supports Left, Right, Center, and Justify through `SankeyNodes` and the F# / C# chart conveniences.
- **Virtual-WebGL** — existing `DisplayOptions.AdditionalHeadTags` can load the optional WebGL 1 virtualization script before plotly.js; the encoded-array guide shows the script ordering.
- [#500](https://github.com/plotly/Plotly.NET/pull/500): Internal refactor — split the monolithic `Chart.fs` into 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.Venn` draws a Venn diagram comparing two or three sets (`set1`, `set2`, optional `Set3`), 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.UpSet` draws 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 via `SetData`/`SetDataChartsTitle`.
- Both take plain `#seq<string>` / `#seq<#seq<string>>` set inputs (treated as sets internally; duplicates ignored) and support the standard `UseDefaults` parameter.
- 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).