3D IsoSurface plots

BinderNotebook

Summary: This example shows how to create 3D-IsoSurface 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 xIso, yIso, zIso =
    mgrid (-5., 5., 40)
    |> fun (x, y, z) ->
        (x |> Array.concat |> Array.concat), (y |> Array.concat |> Array.concat), (z |> Array.concat |> Array.concat)

let valueIso =
    Array.map3 (fun x y z -> x * x * 0.5 + y * y + z * z * 2.) xIso yIso zIso

open Plotly.NET.TraceObjects

let isoSurface =
    Chart.IsoSurface(
        x = xIso,
        y = yIso,
        z = zIso,
        value = valueIso,
        IsoMin = 10.,
        IsoMax = 40.,
        Caps = Caps.init (X = (CapFill.init (Show = false)), Y = (CapFill.init (Show = false))),
        Surface = Surface.init (Count = 5)
    )
namespace Plotly
namespace Plotly.NET
module Defaults from Plotly.NET
<summary> Contains mutable global default values. Changing these values will apply the default values to all consecutive Chart generations. </summary>
val mutable DefaultDisplayOptions: DisplayOptions
Multiple items
type DisplayOptions = inherit DynamicObj new: unit -> DisplayOptions static member addAdditionalHeadTags: additionalHeadTags: XmlNode list -> (DisplayOptions -> DisplayOptions) static member addDescription: description: XmlNode list -> (DisplayOptions -> DisplayOptions) static member combine: first: DisplayOptions -> second: DisplayOptions -> DisplayOptions static member getAdditionalHeadTags: displayOpts: DisplayOptions -> XmlNode list static member getDescription: displayOpts: DisplayOptions -> XmlNode list static member getPlotlyReference: displayOpts: DisplayOptions -> PlotlyJSReference static member init: ?AdditionalHeadTags: XmlNode list * ?Description: XmlNode list * ?PlotlyJSReference: PlotlyJSReference -> DisplayOptions static member initCDNOnly: unit -> DisplayOptions ...

--------------------
new: unit -> DisplayOptions
static member DisplayOptions.init: ?AdditionalHeadTags: Giraffe.ViewEngine.HtmlElements.XmlNode list * ?Description: Giraffe.ViewEngine.HtmlElements.XmlNode list * ?PlotlyJSReference: PlotlyJSReference -> DisplayOptions
type PlotlyJSReference = | CDN of string | Full | Require of string | NoReference
<summary> Sets how plotly is referenced in the head of html docs. </summary>
union case PlotlyJSReference.NoReference: PlotlyJSReference
namespace System
val linspace: min: float * max: float * n: int -> float[]
val min: float
val max: float
val n: int
val failwithf: format: Printf.StringFormat<'T,'Result> -> 'T
<summary>Print to a string buffer and raise an exception with the given result. Helper printers must return strings.</summary>
<param name="format">The formatter.</param>
<returns>The formatted result.</returns>
<example>See <c>Printf.failwithf</c> (link: <see cref="M:Microsoft.FSharp.Core.PrintfModule.PrintFormatToStringThenFail``2" />) for examples.</example>
val bw: float
Multiple items
val float: value: 'T -> float (requires member op_Explicit)
<summary>Converts the argument to 64-bit float. This is a direct conversion for all primitive numeric types. For strings, the input is converted using <c>Double.Parse()</c> with InvariantCulture settings. Otherwise the operation requires an appropriate static conversion method on the input type.</summary>
<param name="value">The input value.</param>
<returns>The converted float</returns>
<example id="float-example"><code lang="fsharp"></code></example>


--------------------
[<Struct>] type float = Double
<summary>An abbreviation for the CLI type <see cref="T:System.Double" />.</summary>
<category>Basic Types</category>


--------------------
type float<'Measure> = float
<summary>The type of double-precision floating point numbers, annotated with a unit of measure. The unit of measure is erased in compiled code and when values of this type are analyzed using reflection. The type is representationally equivalent to <see cref="T:System.Double" />.</summary>
<category index="6">Basic Types with Units of Measure</category>
type Array = interface ICollection interface IEnumerable interface IList interface IStructuralComparable interface IStructuralEquatable interface ICloneable member Clone: unit -> obj member CopyTo: array: Array * index: int -> unit + 1 overload member GetEnumerator: unit -> IEnumerator member GetLength: dimension: int -> int ...
<summary>Provides methods for creating, manipulating, searching, and sorting arrays, thereby serving as the base class for all arrays in the common language runtime.</summary>
val init: count: int -> initializer: (int -> 'T) -> 'T[]
<summary>Creates an array given the dimension and a generator function to compute the elements.</summary>
<param name="count">The number of elements to initialize.</param>
<param name="initializer">The function to generate the initial values for each index.</param>
<returns>The created array.</returns>
<exception cref="T:System.ArgumentException">Thrown when count is negative.</exception>
<example id="init-1"><code lang="fsharp"> Array.init 4 (fun v -&gt; v + 5) </code> Evaluates to <c>[| 5; 6; 7; 8 |]</c></example>
<example id="init-2"><code lang="fsharp"> Array.init -5 (fun v -&gt; v + 5) </code> Throws <c>ArgumentException</c></example>
val i: int
val mgrid: min: float * max: float * n: int -> float[][][] * float[][][] * float[][][]
val data: float[]
val z: float[][][]
val x: float[][][]
val j: int
val k: int
val y: float[][][]
val xIso: float[]
val yIso: float[]
val zIso: float[]
val concat: arrays: seq<'T[]> -> 'T[]
<summary>Builds a new array that contains the elements of each of the given sequence of arrays.</summary>
<param name="arrays">The input sequence of arrays.</param>
<returns>The concatenation of the sequence of input arrays.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when the input sequence is null.</exception>
<example id="concat-1"><code lang="fsharp"> let inputs = [ [| 1; 2 |]; [| 3 |]; [| 4; 5 |] ] inputs |&gt; Array.concat </code> Evaluates to <c>[| 1; 2; 3; 4; 5 |]</c></example>
val valueIso: float[]
val map3: mapping: ('T1 -> 'T2 -> 'T3 -> 'U) -> array1: 'T1[] -> array2: 'T2[] -> array3: 'T3[] -> 'U[]
<summary>Builds a new collection whose elements are the results of applying the given function to the corresponding triples from the three collections. The three input arrays must have the same length, otherwise an <c>ArgumentException</c> is raised.</summary>
<param name="mapping">The function to transform the pairs of the input elements.</param>
<param name="array1">The first input array.</param>
<param name="array2">The second input array.</param>
<param name="array3">The third input array.</param>
<exception cref="T:System.ArgumentException">Thrown when the input arrays differ in length.</exception>
<exception cref="T:System.ArgumentNullException">Thrown when any of the input arrays is null.</exception>
<returns>The array of transformed elements.</returns>
<example id="map3-1"><code lang="fsharp"> let inputs1 = [| "a"; "t"; "ti" |] let inputs2 = [| "l"; "h"; "m" |] let inputs3 = [| "l"; "e"; "e" |] (inputs1, inputs2, inputs3) |||&gt; Array.map3 (fun x y z -&gt; x + y + z) </code> Evaluates to <c>[| "all"; "the"; "time" |]</c></example>
val x: float
val y: float
val z: float
namespace Plotly.NET.TraceObjects
val isoSurface: GenericChart.GenericChart
type Chart = static member AnnotatedHeatmap: zData: seq<#seq<'a1>> * annotationText: seq<#seq<string>> * ?Name: string * ?ShowLegend: bool * ?Opacity: float * ?X: seq<'a3> * ?MultiX: seq<seq<'a3>> * ?XGap: int * ?Y: seq<'a4> * ?MultiY: seq<seq<'a4>> * ?YGap: int * ?Text: 'a5 * ?MultiText: seq<'a5> * ?ColorBar: ColorBar * ?ColorScale: Colorscale * ?ShowScale: bool * ?ReverseScale: bool * ?ZSmooth: SmoothAlg * ?Transpose: bool * ?UseWebGL: bool * ?ReverseYAxis: bool * ?UseDefaults: bool -> GenericChart (requires 'a1 :> IConvertible and 'a3 :> IConvertible and 'a4 :> IConvertible and 'a5 :> IConvertible) + 1 overload static member Area: x: seq<#IConvertible> * y: seq<#IConvertible> * ?ShowMarkers: bool * ?Name: string * ?ShowLegend: bool * ?Opacity: float * ?MultiOpacity: seq<float> * ?Text: 'a2 * ?MultiText: seq<'a2> * ?TextPosition: TextPosition * ?MultiTextPosition: seq<TextPosition> * ?MarkerColor: Color * ?MarkerColorScale: Colorscale * ?MarkerOutline: Line * ?MarkerSymbol: MarkerSymbol * ?MultiMarkerSymbol: seq<MarkerSymbol> * ?Marker: Marker * ?LineColor: Color * ?LineColorScale: Colorscale * ?LineWidth: float * ?LineDash: DrawingStyle * ?Line: Line * ?AlignmentGroup: string * ?OffsetGroup: string * ?StackGroup: string * ?Orientation: Orientation * ?GroupNorm: GroupNorm * ?FillColor: Color * ?FillPatternShape: PatternShape * ?FillPattern: Pattern * ?UseWebGL: bool * ?UseDefaults: bool -> GenericChart (requires 'a2 :> IConvertible) + 1 overload static member Bar: values: seq<#IConvertible> * ?Keys: seq<'a1> * ?MultiKeys: seq<seq<'a1>> * ?Name: string * ?ShowLegend: bool * ?Opacity: float * ?MultiOpacity: seq<float> * ?Text: 'a2 * ?MultiText: seq<'a2> * ?MarkerColor: Color * ?MarkerColorScale: Colorscale * ?MarkerOutline: Line * ?MarkerPatternShape: PatternShape * ?MultiMarkerPatternShape: seq<PatternShape> * ?MarkerPattern: Pattern * ?Marker: Marker * ?Base: #IConvertible * ?Width: 'a4 * ?MultiWidth: seq<'a4> * ?TextPosition: TextPosition * ?MultiTextPosition: seq<TextPosition> * ?UseDefaults: bool -> GenericChart (requires 'a1 :> IConvertible and 'a2 :> IConvertible and 'a4 :> IConvertible) + 1 overload static member BoxPlot: ?X: seq<'a0> * ?MultiX: seq<seq<'a0>> * ?Y: seq<'a1> * ?MultiY: seq<seq<'a1>> * ?Name: string * ?ShowLegend: bool * ?Text: 'a2 * ?MultiText: seq<'a2> * ?FillColor: Color * ?MarkerColor: Color * ?Marker: Marker * ?Opacity: float * ?WhiskerWidth: float * ?BoxPoints: BoxPoints * ?BoxMean: BoxMean * ?Jitter: float * ?PointPos: float * ?Orientation: Orientation * ?OutlineColor: Color * ?OutlineWidth: float * ?Outline: Line * ?AlignmentGroup: string * ?OffsetGroup: string * ?Notched: bool * ?NotchWidth: float * ?QuartileMethod: QuartileMethod * ?UseDefaults: bool -> GenericChart (requires 'a0 :> IConvertible and 'a1 :> IConvertible and 'a2 :> IConvertible) + 2 overloads static member Bubble: x: seq<#IConvertible> * y: seq<#IConvertible> * sizes: seq<int> * ?Name: string * ?ShowLegend: bool * ?Opacity: float * ?MultiOpacity: seq<float> * ?Text: 'a2 * ?MultiText: seq<'a2> * ?TextPosition: TextPosition * ?MultiTextPosition: seq<TextPosition> * ?MarkerColor: Color * ?MarkerColorScale: Colorscale * ?MarkerOutline: Line * ?MarkerSymbol: MarkerSymbol * ?MultiMarkerSymbol: seq<MarkerSymbol> * ?Marker: Marker * ?LineColor: Color * ?LineColorScale: Colorscale * ?LineWidth: float * ?LineDash: DrawingStyle * ?Line: Line * ?AlignmentGroup: string * ?OffsetGroup: string * ?StackGroup: string * ?Orientation: Orientation * ?GroupNorm: GroupNorm * ?UseWebGL: bool * ?UseDefaults: bool -> GenericChart (requires 'a2 :> IConvertible) + 1 overload static member Candlestick: ``open`` : seq<#IConvertible> * high: seq<#IConvertible> * low: seq<#IConvertible> * close: seq<#IConvertible> * ?X: seq<'a4> * ?MultiX: seq<seq<'a4>> * ?Name: string * ?ShowLegend: bool * ?Opacity: float * ?Text: 'a5 * ?MultiText: seq<'a5> * ?Line: Line * ?IncreasingColor: Color * ?Increasing: FinanceMarker * ?DecreasingColor: Color * ?Decreasing: FinanceMarker * ?WhiskerWidth: float * ?ShowXAxisRangeSlider: bool * ?UseDefaults: bool -> GenericChart (requires 'a4 :> IConvertible and 'a5 :> IConvertible) + 2 overloads static member Column: values: seq<#IConvertible> * ?Keys: seq<'a1> * ?MultiKeys: seq<seq<'a1>> * ?Name: string * ?ShowLegend: bool * ?Opacity: float * ?MultiOpacity: seq<float> * ?Text: 'a2 * ?MultiText: seq<'a2> * ?MarkerColor: Color * ?MarkerColorScale: Colorscale * ?MarkerOutline: Line * ?MarkerPatternShape: PatternShape * ?MultiMarkerPatternShape: seq<PatternShape> * ?MarkerPattern: Pattern * ?Marker: Marker * ?Base: #IConvertible * ?Width: 'a4 * ?MultiWidth: seq<'a4> * ?TextPosition: TextPosition * ?MultiTextPosition: seq<TextPosition> * ?UseDefaults: bool -> GenericChart (requires 'a1 :> IConvertible and 'a2 :> IConvertible and 'a4 :> IConvertible) + 1 overload static member Contour: zData: seq<#seq<'a1>> * ?Name: string * ?ShowLegend: bool * ?Opacity: float * ?X: seq<'a2> * ?MultiX: seq<seq<'a2>> * ?Y: seq<'a3> * ?MultiY: seq<seq<'a3>> * ?Text: 'a4 * ?MultiText: seq<'a4> * ?ColorBar: ColorBar * ?ColorScale: Colorscale * ?ShowScale: bool * ?ReverseScale: bool * ?Transpose: bool * ?ContourLineColor: Color * ?ContourLineDash: DrawingStyle * ?ContourLineSmoothing: float * ?ContourLine: Line * ?ContoursColoring: ContourColoring * ?ContoursOperation: ConstraintOperation * ?ContoursType: ContourType * ?ShowContourLabels: bool * ?ContourLabelFont: Font * ?Contours: Contours * ?FillColor: Color * ?NContours: int * ?UseDefaults: bool -> GenericChart (requires 'a1 :> IConvertible and 'a2 :> IConvertible and 'a3 :> IConvertible and 'a4 :> IConvertible) static member Funnel: x: seq<#IConvertible> * y: seq<#IConvertible> * ?Name: string * ?ShowLegend: bool * ?Opacity: float * ?Width: float * ?Offset: float * ?Text: 'a2 * ?MultiText: seq<'a2> * ?TextPosition: TextPosition * ?MultiTextPosition: seq<TextPosition> * ?Orientation: Orientation * ?AlignmentGroup: string * ?OffsetGroup: string * ?MarkerColor: Color * ?MarkerOutline: Line * ?Marker: Marker * ?TextInfo: TextInfo * ?ConnectorLineColor: Color * ?ConnectorLineStyle: DrawingStyle * ?ConnectorFillColor: Color * ?ConnectorLine: Line * ?Connector: FunnelConnector * ?InsideTextFont: Font * ?OutsideTextFont: Font * ?UseDefaults: bool -> GenericChart (requires 'a2 :> IConvertible) static member Heatmap: zData: seq<#seq<'a1>> * ?X: seq<'a2> * ?MultiX: seq<seq<'a2>> * ?Y: seq<'a3> * ?MultiY: seq<seq<'a3>> * ?Name: string * ?ShowLegend: bool * ?Opacity: float * ?XGap: int * ?YGap: int * ?Text: 'a4 * ?MultiText: seq<'a4> * ?ColorBar: ColorBar * ?ColorScale: Colorscale * ?ShowScale: bool * ?ReverseScale: bool * ?ZSmooth: SmoothAlg * ?Transpose: bool * ?UseWebGL: bool * ?ReverseYAxis: bool * ?UseDefaults: bool -> GenericChart (requires 'a1 :> IConvertible and 'a2 :> IConvertible and 'a3 :> IConvertible and 'a4 :> IConvertible) + 1 overload ...
static member Chart.IsoSurface: x: seq<#IConvertible> * y: seq<#IConvertible> * z: seq<#IConvertible> * value: seq<#IConvertible> * ?Name: string * ?ShowLegend: bool * ?Opacity: float * ?Text: 'e * ?MultiText: seq<'e> * ?ColorScale: StyleParam.Colorscale * ?ShowScale: bool * ?ColorBar: ColorBar * ?IsoMin: float * ?IsoMax: float * ?Caps: Caps * ?Slices: Slices * ?Surface: Surface * ?CameraProjectionType: StyleParam.CameraProjectionType * ?Camera: LayoutObjects.Camera * ?UseDefaults: bool -> GenericChart.GenericChart (requires 'e :> IConvertible)
argument x: seq<float>
<summary> Creates a isosurface plot to visualize the volume of a 3D shape. An isosurface is a surface that represents points of a constant value (e.g. pressure, temperature, velocity, density) within a volume of space. Draws isosurfaces between iso-min and iso-max values with coordinates given by four 1-dimensional arrays containing the `value`, `x`, `y` and `z` of every vertex of a uniform or non-uniform 3-D grid. Horizontal or vertical slices, caps as well as spaceframe between iso-min and iso-max values could also be drawn using this trace. This plot is very similar to the `Volume` plot. However it shows all surfaces with the same opacity. </summary>
<param name="x">Sets the X coordinates of the vertices on X axis.</param>
<param name="y">Sets the Y coordinates of the vertices on Y axis.</param>
<param name="z">Sets the Z coordinates of the vertices on Z axis.</param>
<param name="value">Sets the 4th dimension (value) of the vertices.</param>
<param name="Name">Sets the trace name. The trace name appear as the legend item and on hover</param>
<param name="ShowLegend">Determines whether or not an item corresponding to this trace is shown in the legend.</param>
<param name="Opacity">Sets the opactity of the trace</param>
<param name="Text">Sets a text associated with each datum</param>
<param name="MultiText">Sets individual text for each datum</param>
<param name="ColorScale">Sets the colorscale</param>
<param name="ShowScale">Whether or not to show the colorbar/colorscale</param>
<param name="ColorBar">Sets the colorbar</param>
<param name="IsoMin">Sets the minimum boundary for iso-surface plot.</param>
<param name="IsoMax">Sets the maximum boundary for iso-surface plot.</param>
<param name="Caps">Sets the caps (color-coded surfaces on the sides of the visualization domain)</param>
<param name="Slices">Adds Slices through the volume</param>
<param name="Surface">Sets the surface.</param>
<param name="CameraProjectionType">Sets the camera projection type of this trace.</param>
<param name="Camera">Sets the camera of this trace.</param>
<param name="UseDefaults">If set to false, ignore the global default settings set in `Defaults`</param>
argument y: seq<float>
<summary> Creates a isosurface plot to visualize the volume of a 3D shape. An isosurface is a surface that represents points of a constant value (e.g. pressure, temperature, velocity, density) within a volume of space. Draws isosurfaces between iso-min and iso-max values with coordinates given by four 1-dimensional arrays containing the `value`, `x`, `y` and `z` of every vertex of a uniform or non-uniform 3-D grid. Horizontal or vertical slices, caps as well as spaceframe between iso-min and iso-max values could also be drawn using this trace. This plot is very similar to the `Volume` plot. However it shows all surfaces with the same opacity. </summary>
<param name="x">Sets the X coordinates of the vertices on X axis.</param>
<param name="y">Sets the Y coordinates of the vertices on Y axis.</param>
<param name="z">Sets the Z coordinates of the vertices on Z axis.</param>
<param name="value">Sets the 4th dimension (value) of the vertices.</param>
<param name="Name">Sets the trace name. The trace name appear as the legend item and on hover</param>
<param name="ShowLegend">Determines whether or not an item corresponding to this trace is shown in the legend.</param>
<param name="Opacity">Sets the opactity of the trace</param>
<param name="Text">Sets a text associated with each datum</param>
<param name="MultiText">Sets individual text for each datum</param>
<param name="ColorScale">Sets the colorscale</param>
<param name="ShowScale">Whether or not to show the colorbar/colorscale</param>
<param name="ColorBar">Sets the colorbar</param>
<param name="IsoMin">Sets the minimum boundary for iso-surface plot.</param>
<param name="IsoMax">Sets the maximum boundary for iso-surface plot.</param>
<param name="Caps">Sets the caps (color-coded surfaces on the sides of the visualization domain)</param>
<param name="Slices">Adds Slices through the volume</param>
<param name="Surface">Sets the surface.</param>
<param name="CameraProjectionType">Sets the camera projection type of this trace.</param>
<param name="Camera">Sets the camera of this trace.</param>
<param name="UseDefaults">If set to false, ignore the global default settings set in `Defaults`</param>
argument z: seq<float>
<summary> Creates a isosurface plot to visualize the volume of a 3D shape. An isosurface is a surface that represents points of a constant value (e.g. pressure, temperature, velocity, density) within a volume of space. Draws isosurfaces between iso-min and iso-max values with coordinates given by four 1-dimensional arrays containing the `value`, `x`, `y` and `z` of every vertex of a uniform or non-uniform 3-D grid. Horizontal or vertical slices, caps as well as spaceframe between iso-min and iso-max values could also be drawn using this trace. This plot is very similar to the `Volume` plot. However it shows all surfaces with the same opacity. </summary>
<param name="x">Sets the X coordinates of the vertices on X axis.</param>
<param name="y">Sets the Y coordinates of the vertices on Y axis.</param>
<param name="z">Sets the Z coordinates of the vertices on Z axis.</param>
<param name="value">Sets the 4th dimension (value) of the vertices.</param>
<param name="Name">Sets the trace name. The trace name appear as the legend item and on hover</param>
<param name="ShowLegend">Determines whether or not an item corresponding to this trace is shown in the legend.</param>
<param name="Opacity">Sets the opactity of the trace</param>
<param name="Text">Sets a text associated with each datum</param>
<param name="MultiText">Sets individual text for each datum</param>
<param name="ColorScale">Sets the colorscale</param>
<param name="ShowScale">Whether or not to show the colorbar/colorscale</param>
<param name="ColorBar">Sets the colorbar</param>
<param name="IsoMin">Sets the minimum boundary for iso-surface plot.</param>
<param name="IsoMax">Sets the maximum boundary for iso-surface plot.</param>
<param name="Caps">Sets the caps (color-coded surfaces on the sides of the visualization domain)</param>
<param name="Slices">Adds Slices through the volume</param>
<param name="Surface">Sets the surface.</param>
<param name="CameraProjectionType">Sets the camera projection type of this trace.</param>
<param name="Camera">Sets the camera of this trace.</param>
<param name="UseDefaults">If set to false, ignore the global default settings set in `Defaults`</param>
Multiple items
type Caps = inherit DynamicObj new: unit -> Caps static member init: ?X: CapFill * ?Y: CapFill * ?Z: CapFill -> Caps static member style: ?X: CapFill * ?Y: CapFill * ?Z: CapFill -> (Caps -> Caps)

--------------------
new: unit -> Caps
static member Caps.init: ?X: CapFill * ?Y: CapFill * ?Z: CapFill -> Caps
argument X: CapFill option
Multiple items
type CapFill = inherit DynamicObj new: unit -> CapFill static member init: ?Fill: float * ?Show: bool -> CapFill static member style: ?Fill: float * ?Show: bool -> (CapFill -> CapFill)

--------------------
new: unit -> CapFill
static member CapFill.init: ?Fill: float * ?Show: bool -> CapFill
argument Y: CapFill option
Multiple items
type Surface = inherit DynamicObj new: unit -> Surface static member init: ?Count: int * ?Fill: float * ?Pattern: SurfacePattern * ?Show: bool -> Surface static member style: ?Count: int * ?Fill: float * ?Pattern: SurfacePattern * ?Show: bool -> (Surface -> Surface)

--------------------
new: unit -> Surface
static member Surface.init: ?Count: int * ?Fill: float * ?Pattern: StyleParam.SurfacePattern * ?Show: bool -> Surface
module GenericChart from Plotly.NET
<summary> Module to represent a GenericChart </summary>
val toChartHTML: gChart: GenericChart.GenericChart -> string