Contour Plots in F#
How to make Contour plots in F# with Plotly.
Plotly is known for its graphing libraries, but it's also a broader ecosystem for building interactive data apps, AI data analysis tools, and deploying and hosting Dash apps. Explore the full set of tools and platforms designed to help turn data into action. Discover Plotly.
Note: We are retiring documentation for R, MATLAB, Julia, and F#. Learn more about this change here.
In [1]:
#r "nuget: Newtonsoft.Json, 12.0.3"
#r "nuget: Plotly.NET, 2.0.0-preview.10"
#r "nuget: Plotly.NET.Interactive, 2.0.0-preview.10"
#r "nuget: FSharp.Data"
Basic Contour Plot¶
A 2D contour plot shows the contour lines of a 2D numerical array z, i.e. interpolated lines of isovalues of z.
In [2]:
open Plotly.NET
let z = [[10.; 10.625; 12.5; 15.625; 20.];
[5.625; 6.25;8.125;11.25;15.625];
[2.5; 3.125; 5.; 8.125; 12.5];
[0.625; 1.25; 3.125; 6.25; 10.625];
[0.; 0.625; 2.5; 5.625; 10.]]
z|> Chart.Contour
Out[2]:
Setting X and Y Coordinates in a Contour Plot¶
In [3]:
open Plotly.NET
let z = [[10.; 10.625; 12.5; 15.625; 20.];
[5.625; 6.25;8.125;11.25;15.625];
[2.5; 3.125; 5.; 8.125; 12.5];
[0.625; 1.25; 3.125; 6.25; 10.625];
[0.; 0.625; 2.5; 5.625; 10.]]
Chart.Contour(data=z,X=[-9; -6; -5 ; -3; -1],Y=[0; 1; 4; 5; 7],zSmooth=StyleParam.SmoothAlg.Best)
Out[3]:
Colorscale for Contour Plot¶
In [4]:
open Plotly.NET
let z = [[10.; 10.625; 12.5; 15.625; 20.];
[5.625; 6.25;8.125;11.25;15.625];
[2.5; 3.125; 5.; 8.125; 12.5];
[0.625; 1.25; 3.125; 6.25; 10.625];
[0.; 0.625; 2.5; 5.625; 10.]]
Chart.Contour(data=z,Colorscale=StyleParam.Colorscale.Electric)
Out[4]:
Customizing Size and Range of a Contour Plot's Contours (ABSTRACTION MISSING)¶
Customizing Spacing Between X and Y Axis Ticks¶
In [5]:
open Plotly.NET
let z = [[10.; 10.625; 12.5; 15.625; 20.];
[5.625; 6.25;8.125;11.25;15.625];
[2.5; 3.125; 5.; 8.125; 12.5];
[0.625; 1.25; 3.125; 6.25; 10.625];
[0.; 0.625; 2.5; 5.625; 10.]]
Chart.Contour(data=z,Colorscale=StyleParam.Colorscale.Electric)
|> GenericChart.mapTrace (Trace2DStyle.Contour(X0=5,dX=10,Y0=10,dY=10))
Out[5]:
Connect the Gaps Between None Values in the Z Matrix¶
In [6]:
open Plotly.NET
let z = [[Double.NaN;Double.NaN ; Double.NaN; 12.; 13.; 14.; 15.; 16.];
[Double.NaN; 1.; Double.NaN; 11.; Double.NaN; Double.NaN; Double.NaN; 17.];
[Double.NaN; 2.; 6.; 7.; Double.NaN; Double.NaN; Double.NaN; 18.];
[Double.NaN; 3.; Double.NaN; 8.; Double.NaN; Double.NaN; Double.NaN; 19.];
[5.; 4.; 10.; 9.; Double.NaN; Double.NaN; Double.NaN; 20.];
[Double.NaN; Double.NaN; Double.NaN; 27.; Double.NaN; Double.NaN; Double.NaN; 21.];
[Double.NaN; Double.NaN; Double.NaN; 26.; 25.; 24.; 23.; 22.]]
[
Chart.Contour(data=z,Showscale=false)
Chart.Contour(data=z,Showscale=false)
|> GenericChart.mapTrace(fun t -> t?connectgaps<-true;t)
Chart.Contour(data=z,Showscale=false,zSmooth=StyleParam.SmoothAlg.Best)
Chart.Contour(data=z,Showscale=false,zSmooth=StyleParam.SmoothAlg.Best)
|> GenericChart.mapTrace(fun t -> t?connectgaps<-true;t)
] |> Chart.Grid(2,2)
Out[6]:
Smoothing the Contour lines (ABSTRACTION MISSING) (NOT WORKING)¶
In [7]:
open Plotly.NET
let z = [[2; 4; 7; 12; 13; 14; 15; 16];
[3; 1; 6; 11; 12; 13; 16; 17];
[4; 2; 7; 7; 11; 14; 17; 18];
[5; 3; 8; 8; 13; 15; 18; 19];
[7; 4; 10; 9; 16; 18; 20; 19];
[9; 10; 5; 27; 23; 21; 21; 21];
[11; 14; 17; 26; 25; 24; 23; 22]]
[
Chart.Contour(z,Name="Without Smoothing")
|> GenericChart.mapTrace (fun t -> t?line_smoothing <- 0;t)
Chart.Contour(z,Name="With Smoothing")
|> GenericChart.mapTrace (fun t -> t?line_smoothing <- 0.85;t)
]|> Chart.Grid(1,2)
Out[7]:
Smooth Contour Coloring (ABSTRACTION MISSING)¶
Contour Line Labels (ABSTRACTION MISSING)¶
Contour Lines (ABSTRACTION MISSING)¶
Custom Contour Plot Colorscale¶
In [8]:
open Plotly.NET
let z = [[10.; 10.625; 12.5; 15.625; 20.];
[5.625; 6.25;8.125;11.25;15.625];
[2.5; 3.125; 5.; 8.125; 12.5];
[0.625; 1.25; 3.125; 6.25; 10.625];
[0.; 0.625; 2.5; 5.625; 10.]]
let colorscale = StyleParam.Colorscale.Custom([(0., "gold"); (0.5, "mediumturquoise"); (1., "lightsalmon")])
Chart.Contour(data=z,Colorscale=colorscale)
Out[8]:
Color Bar Title¶
In [9]:
open Plotly.NET
open Plotly.NET.TraceObjects
open Plotly.NET.LayoutObjects
let z = [[10.; 10.625; 12.5; 15.625; 20.];
[5.625; 6.25;8.125;11.25;15.625];
[2.5; 3.125; 5.; 8.125; 12.5];
[0.625; 1.25; 3.125; 6.25; 10.625];
[0.; 0.625; 2.5; 5.625; 10.]]
let colorBar =
ColorBar.init (
Title =
Title.init (
"Color bar Title",
Side = StyleParam.Side.Right,
Font = Font.init (Family = StyleParam.FontFamily.Arial, Size = 14.)
)
)
Chart.Contour(data=z,ColorBar=colorBar)
Out[9]:
Color Bar Size for Contour Plots¶
In the example below, both the thickness (given here in pixels) and the length (given here as a fraction of the plot height) are set.
In [10]:
open Plotly.NET
open Plotly.NET.TraceObjects
open Plotly.NET.LayoutObjects
let z = [[10.; 10.625; 12.5; 15.625; 20.];
[5.625; 6.25;8.125;11.25;15.625];
[2.5; 3.125; 5.; 8.125; 12.5];
[0.625; 1.25; 3.125; 6.25; 10.625];
[0.; 0.625; 2.5; 5.625; 10.]]
let colorBar =
ColorBar.init (
Thickness = 25.,
ThicknessMode = StyleParam.UnitMode.Pixels,
Len = 0.6,
LenMode = StyleParam.UnitMode.Fraction,
OutlineWidth = 0.
)
Chart.Contour(data=z,ColorBar=colorBar)
Out[10]:
Styling Color Bar Ticks for Contour Plots¶
In [11]:
open Plotly.NET
open Plotly.NET.TraceObjects
open Plotly.NET.LayoutObjects
let z = [[10.; 10.625; 12.5; 15.625; 20.];
[5.625; 6.25;8.125;11.25;15.625];
[2.5; 3.125; 5.; 8.125; 12.5];
[0.625; 1.25; 3.125; 6.25; 10.625];
[0.; 0.625; 2.5; 5.625; 10.]]
let colorBar =
ColorBar.init (
NTicks = 10,
Ticks = StyleParam.TickOptions.Outside,
TickLen = 5.,
TickWidth = 1.,
ShowTickLabels = true,
TickAngle = 0,
TickFont = Font.init (Size = 12.)
)
Chart.Contour(data=z,ColorBar=colorBar)
Out[11]: