Summary: This example shows how to create 3D-Volume charts in F#.
Let's first create some data for the purpose of creating example charts:
open System
open Plotly.NET
let linspace (min, max, n) =
if n <= 2 then
failwithf "n needs to be larger then 2"
let bw = float (max - min) / (float n - 1.)
Array.init n (fun i -> min + (bw * float i))
let mgrid (min, max, n) =
let data = linspace (min, max, n)
let z =
[| for i in 1..n do
[| for i in 1..n do
yield data |] |]
let x =
[| for i in 1..n do
[| for j in 1..n do
yield
[| for k in 1..n do
yield data.[i - 1] |] |] |]
let y =
[| for i in 1..n do
[| for j in 1..n do
yield
[| for k in 1..n do
yield data.[j - 1] |] |] |]
x, y, z
let x, y, z =
mgrid (-8., 8., 40)
|> fun (x, y, z) ->
(x |> Array.concat |> Array.concat), (y |> Array.concat |> Array.concat), (z |> Array.concat |> Array.concat)
let values = Array.map3 (fun x y z -> sin (x * y * z) / (x * y * z)) x y z
open Plotly.NET.TraceObjects
let volume =
Chart.Volume(
x = x,
y = y,
z = z,
value = values,
Opacity = 0.1,
Surface = (Surface.init (Count = 17)),
IsoMin = 0.1,
IsoMax = 0.8
)