Filled Area in F#
How to make filled area charts in F# with Plotly.
This example shows how to fill the area enclosed by traces.
In [1]:
#r "nuget: Plotly.NET, 2.0.0-preview.8"
#r "nuget: Plotly.NET.Interactive, 2.0.0-preview.8"
open Plotly.NET
Basic Filled Area Chart¶
In [2]:
open Plotly.NET
let x = [1; 2; 3; 4]
let y0 = [0; 2; 3; 5]
let y1 = [3; 5; 1; 7]
[
Chart.Area(x, y0)
Chart.Area(x, y1)
]
|> Chart.combine
Out[2]:
Overlaid Area Chart Without Boundary Lines¶
In [3]:
open Plotly.NET
let x = [1; 2; 3; 4]
let y0 = [0; 2; 3; 5]
let y1 = [3; 5; 1; 7]
[
Chart.Area(x, y0)
Chart.Area(x, y1)
]
|> Chart.combine
|> Chart.withLineStyle(Width=0.0)
Out[3]:
Interior Filling for Area Chart¶
Setting Fill=StyleParam.Fill.ToNext_y makes two traces fill only interior
In [4]:
open Plotly.NET
open Plotly.NET
let x = [1; 2; 3; 4]
let y0 = [3; 4; 8; 3]
let y1 = [1; 6; 2; 6]
[
Chart.Scatter(x, y0, Plotly.NET.StyleParam.Mode.Lines, Color = Color.fromString "indigo")
Chart.Scatter(x, y1, Plotly.NET.StyleParam.Mode.Lines, Color = Color.fromString "indigo")
|> GenericChart.mapTrace(Trace2DStyle.Scatter(Fill=StyleParam.Fill.ToNext_y))
]
|> Chart.combine
Out[4]:
Stacked Area Chart¶
In [5]:
open Plotly.NET
let x = ["Winter"; "Spring"; "Summer"; "Fall"]
let y0 = [40; 60; 40; 10]
let y1 = [20; 10; 10; 60]
let y2 = [40; 30; 50; 30]
[
Chart.StackedArea(x, y0, Color=Color.fromString "#B4A3F4")
Chart.StackedArea(x, y1, Color=Color.fromString "#AAE9E8")
Chart.StackedArea(x, y2, Color=Color.fromString "#CEF2E5")
]
|> Chart.combine
|> Chart.withLineStyle(Width=0.0)
Out[5]:
Stacked Area Chart with Normalized Values¶
Stacked Area Chart can be created using Chart.Scatter with same StackGroup property set for all traces. For example same StackGroup="one" set for all Chart.Scatter traces
In [6]:
open Plotly.NET
open Plotly.NET.LayoutObjects
let x = ["Winter"; "Spring"; "Summer"; "Fall"]
let y0 = [40; 20; 30; 40]
let y1 = [20; 10; 10; 60]
let y2 = [40; 30; 50; 30]
let yAxis = LinearAxis.init(AxisType = StyleParam.AxisType.Linear,
Range = StyleParam.Range.MinMax(1.0, 100.0),
TickSuffix = "%")
[
Chart.Scatter(x,
y0,
StyleParam.Mode.Lines,
StackGroup = "one",
GroupNorm = StyleParam.GroupNorm.Percent,
Color=Color.fromString "rgb(131, 90, 241)")
Chart.Scatter(x,
y1,
StyleParam.Mode.Lines,
StackGroup = "one",
Color=Color.fromString "rgb(111, 231, 219)")
Chart.Scatter(x,
y2,
StyleParam.Mode.Lines,
StackGroup = "one",
Color=Color.fromString "rgb(184, 247, 2121)")
]
|> Chart.combine
|> Chart.withLineStyle(Width=0.0)
|> Chart.withYAxis yAxis
Out[6]:
Select Hover Points¶
Chart.Area uses Chart.Scatter, hence setting Trace2DStyle.Scatter will apply area trace styles. HoverInformation can be set by the following properties in Trace2DStyle.Scatter
In [7]:
open Plotly.NET.TraceObjects
let x0 = [0.0; 0.5; 1.0; 1.5; 2.0]
let y = [0.0; 1.0; 2.0; 1.0; 0.0]
let x1 = [3.0; 3.5; 4.0; 4.5; 5.0]
[
Chart.Area(x0,
y,
Color=Color.fromString "#9400D3")
|> GenericChart.mapTrace (Trace2DStyle.Scatter(HoverOn=StyleParam.HoverOn.PointsFills,HoverInfo=StyleParam.HoverInfo.All,Text="Points + Fills"))
Chart.Area(x1,
y,
Color=Color.fromString "#EE82EE")
|> GenericChart.mapTrace (Trace2DStyle.Scatter(HoverOn=StyleParam.HoverOn.Points,HoverInfo=StyleParam.HoverInfo.All,Text="Points Only"))
]
|> Chart.combine
|> Chart.withXAxisStyle(title="X",MinMax=(0.0, 5.2))
|> Chart.withYAxisStyle(title="Y",MinMax=(0.0, 3.0))
|> Chart.withSize(Width = 1000)
Out[7]: