BinderScriptNotebook

Plotly.NET basics

This section is WIP.

Table of contents

Library design

Plotly.NET is a .NET wrapper for creation of plotly charts written in F#. This means that, under the hood, all functionality creates JSON objects that can be rendered by plotly.

A plotly.js chart consists of 3 objects:

  • data, which is a collection of traces which represent the data and chart type used to visualize the data
  • layout, which controls the general chart layout such as axis positions and styles
  • config high level properties of the chart like making all chart elements editable or the tool bar on top

These are mirrored in Plotly.NET's central type, GenericChart:

GenericChart

The central type that gets created by all Chart constructors is GenericChart, which itself represents either a single chart or a multi chart (as a Discriminate Union type). It looks like this:

type GenericChart_ =
    | Chart of Trace * Layout * Config * DisplayOptions
    | MultiChart of Trace list * Layout * Config * DisplayOptions

As you can see, a GenericChart consists of four top level objects - Trace (multiple of those in the case of a MultiChart) , Layout, Config, and DisplayOptions.

  • Trace is in principle the representation of a dataset on a chart, including for example the data itself, color and shape of the visualization, etc.
  • Layout is everything of the chart that is not dataset specifivc - e.g. the shape and style of axes, the chart title, etc.
  • Config is an object that configures high level properties of the chart like making all chart elements editable or the tool bar on top
  • DisplayOptions is an object that contains meta information about how the html document that contains the chart.

Layers of abstraction

Plotly.NET uses multiple layers of abstractions to generate valid plotly.js JSON objects with different levels of control and complexity:

The Chart module

The Chart module provides the highest layer of abstraction. Here, plotly.js trace types are broken down to the most common and useful styling options, and combined with common layout settings. It also provides composite charts which consist of multiple traces such as Chart.Range, which really is a combination of 3 scatter traces.

Here is an example on how to create a simple 2D point chart:

let pointChart =
    Chart.Point([1,2; 3,4])
No value returned by any evaluator

The TraceStyle modules

The TraceStyle modules offer access to all parameters supported by plotly.js for the respective trace type. If you want to create a scatter trace, you can use the function Trace2D.initScatter, which will initialize an empty trace of type scatter and apply a styling function to it. This function would be Trace2DStyle.Scatter, which can apply all scatter related parameters to a trace. In contrast to the Chart module, the parameters are named exactly the same as in plotly.js (but in PascalCase).

To create a GenericChart from a Trace object, you can use GenericChart.ofTraceObject. Compare how many more styling options you have compared to Chart.Point above, but also take a look at how more verbose you have to be. You can clearly see the advantages and disadvantages of both approaches.

let withTraceStyle =
    Trace2D.initScatter( 
        Trace2DStyle.Scatter(
            X = [1; 3],
            Y = [2; 4]
        )
    )
    |> GenericChart.ofTraceObject true
No value returned by any evaluator

Dynamic object

The prime directive for all functions provided by Plotly.NET is the construction of valid plotly JSON objects. For this purpose, Trace, Layout, and Config (and many other internal objects) are inheriting from DynamicObj, an extension of DynamicObject which makes it possible to set arbitraryly named and typed properties of these objects via the ? operator.

If you want to exactly mirror a plotly.js tutorial, or want to set properties that for any reason are not abstracted in Plotly.NET, it can be useful to use the power of DynamicObj to set the parameters directly. Just make sure that the property name is exactly the same as in plotly.js (all lowercase)

So if you want to set any kind of property on one of these objects you can do it in a very declarative way like this:

let myTrace = Trace("scatter") // create a scatter trace
myTrace?x <- [0;3] // set the x property (the x dimension of the data)
myTrace?y <- [2;4] // set the y property (the y dimension of the data)

let withDynObj = GenericChart.ofTraceObject true myTrace
No value returned by any evaluator

lets have a look at the trace object that will be created. The relevant section of the html generated with Chart.Show is the following:

var data = [{"type":"scatter","x":[0,1,2],"y":[0,1,2]}];
namespace Plotly
namespace Plotly.NET
type GenericChart_ = | Chart of obj * obj * obj * obj | MultiChart of obj * obj * obj * obj
union case GenericChart_.Chart: obj * obj * obj * obj -> GenericChart_
union case GenericChart_.MultiChart: obj * obj * obj * obj -> GenericChart_
type 'T list = List<'T>
<summary>The type of immutable singly-linked lists. </summary>
<remarks>See the <see cref="T:Microsoft.FSharp.Collections.ListModule" /> module for further operations related to lists. Use the constructors <c>[]</c> and <c>::</c> (infix) to create values of this type, or the notation <c>[1; 2; 3]</c>. Use the values in the <c>List</c> module to manipulate values of this type, or pattern match against the values directly. See also <a href="https://docs.microsoft.com/dotnet/fsharp/language-reference/lists">F# Language Guide - Lists</a>. </remarks>
val pointChart: GenericChart.GenericChart
type Chart = static member AnnotatedHeatmap: zData: seq<#seq<'a1>> * annotationText: seq<#seq<string>> * ?Name: string * ?ShowLegend: bool * ?Opacity: float * ?X: seq<#IConvertible> * ?XGap: int * ?Y: seq<#IConvertible> * ?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 '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 * ?StackGroup: string * ?Orientation: Orientation * ?GroupNorm: GroupNorm * ?FillColor: Color * ?UseWebGL: bool * ?UseDefaults: bool -> GenericChart (requires 'a2 :> IConvertible) + 1 overload static member Bar: values: seq<#IConvertible> * ?Keys: seq<#IConvertible> * ?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 'a2 :> IConvertible and 'a4 :> IConvertible) + 1 overload static member BoxPlot: ?X: seq<#IConvertible> * ?Y: seq<#IConvertible> * ?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 '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 * ?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<#IConvertible> * ?Name: string * ?ShowLegend: bool * ?Opacity: float * ?Text: 'a5 * ?MultiText: seq<'a5> * ?Line: Line * ?IncreasingColor: Color * ?Increasing: FinanceMarker * ?DecreasingColor: Color * ?Decreasing: FinanceMarker * ?WhiskerWidth: float * ?UseDefaults: bool -> GenericChart (requires 'a5 :> IConvertible) + 1 overload static member Column: values: seq<#IConvertible> * ?Keys: seq<#IConvertible> * ?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 'a2 :> IConvertible and 'a4 :> IConvertible) + 1 overload static member Contour: zData: seq<#seq<'a1>> * ?Name: string * ?ShowLegend: bool * ?Opacity: float * ?X: seq<#IConvertible> * ?Y: seq<#IConvertible> * ?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 '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>> * ?Name: string * ?ShowLegend: bool * ?Opacity: float * ?X: seq<#IConvertible> * ?XGap: int * ?Y: seq<#IConvertible> * ?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 'a4 :> IConvertible) + 1 overload ...
static member Chart.Point: xy: seq<#System.IConvertible * #System.IConvertible> * ?Name: string * ?ShowLegend: bool * ?Opacity: float * ?MultiOpacity: seq<float> * ?Text: 'c * ?MultiText: seq<'c> * ?TextPosition: StyleParam.TextPosition * ?MultiTextPosition: seq<StyleParam.TextPosition> * ?MarkerColor: Color * ?MarkerColorScale: StyleParam.Colorscale * ?MarkerOutline: Line * ?MarkerSymbol: StyleParam.MarkerSymbol * ?MultiMarkerSymbol: seq<StyleParam.MarkerSymbol> * ?Marker: TraceObjects.Marker * ?StackGroup: string * ?Orientation: StyleParam.Orientation * ?GroupNorm: StyleParam.GroupNorm * ?UseWebGL: bool * ?UseDefaults: bool -> GenericChart.GenericChart (requires 'c :> System.IConvertible)
static member Chart.Point: x: seq<#System.IConvertible> * y: seq<#System.IConvertible> * ?Name: string * ?ShowLegend: bool * ?Opacity: float * ?MultiOpacity: seq<float> * ?Text: 'a2 * ?MultiText: seq<'a2> * ?TextPosition: StyleParam.TextPosition * ?MultiTextPosition: seq<StyleParam.TextPosition> * ?MarkerColor: Color * ?MarkerColorScale: StyleParam.Colorscale * ?MarkerOutline: Line * ?MarkerSymbol: StyleParam.MarkerSymbol * ?MultiMarkerSymbol: seq<StyleParam.MarkerSymbol> * ?Marker: TraceObjects.Marker * ?StackGroup: string * ?Orientation: StyleParam.Orientation * ?GroupNorm: StyleParam.GroupNorm * ?UseWebGL: bool * ?UseDefaults: bool -> GenericChart.GenericChart (requires 'a2 :> System.IConvertible)
module GenericChart from Plotly.NET
<summary> Module to represent a GenericChart </summary>
val toChartHTML: gChart: GenericChart.GenericChart -> string
<summary> Converts a GenericChart to it HTML representation. The div layer has a default size of 600 if not specified otherwise. </summary>
val withTraceStyle: GenericChart.GenericChart
Multiple items
type Trace2D = inherit Trace new: traceTypeName: string -> Trace2D static member initBar: applyStyle: (Trace2D -> Trace2D) -> Trace2D static member initBoxPlot: applyStyle: (Trace2D -> Trace2D) -> Trace2D static member initCandlestick: applyStyle: (Trace2D -> Trace2D) -> Trace2D static member initContour: applyStyle: (Trace2D -> Trace2D) -> Trace2D static member initFunnel: applyStyle: (Trace2D -> Trace2D) -> Trace2D static member initHeatmap: applyStyle: (Trace2D -> Trace2D) -> Trace2D static member initHeatmapGL: applyStyle: (Trace2D -> Trace2D) -> Trace2D static member initHistogram: applyStyle: (Trace2D -> Trace2D) -> Trace2D ...
<summary> The most commonly-used kind of subplot is a two-dimensional Cartesian subplot. Traces compatible with these subplots support xaxis and yaxis attributes whose values must refer to corresponding objects in the layout portion of the figure. For example, if xaxis="x", and yaxis="y" (which is the default) then this trace is drawn on the subplot at the intersection of the axes configured under layout.xaxis and layout.yaxis, but if xaxis="x2" and yaxis="y3" then the trace is drawn at the intersection of the axes configured under layout.xaxis2 and layout.yaxis3. Note that attributes such as layout.xaxis and layout.xaxis2 etc do not have to be explicitly defined, in which case default values will be inferred. Multiple traces of different types can be drawn on the same subplot. X- and Y-axes support the type attribute, which enables them to represent continuous values (type="linear", type="log"), temporal values (type="date") or categorical values (type="category", type="multicategory). Axes can also be overlaid on top of one another to create dual-axis or multiple-axis charts. 2-d cartesian subplots lend themselves very well to creating "small multiples" figures, also known as facet or trellis plots. The following trace types are compatible with 2D-cartesian subplots via the xaxis and yaxis attributes: - scatter-like trace types: scatter and scattergl can be used to draw scatter plots, line plots and curves, time-series plots, bubble charts, dot plots and filled areas and also support error bars - bar, funnel, waterfall: bar-like trace types which can also be used to draw timelines and Gantt charts - histogram: an aggregating bar-like trace type - box and violin: 1-dimensional distribution-like trace types - histogram2D and histogram2Dcontour: 2-dimensional distribution-like density trace types - image, heatmap and contour: matrix trace types - ohlc and candlestick: stock-like trace types - splom: multi-dimensional scatter plots which implicitly refer to many 2-d cartesian subplots at once. </summary>

--------------------
new: traceTypeName: string -> Trace2D
static member Trace2D.initScatter: applyStyle: (Trace2D -> Trace2D) -> Trace2D
Multiple items
type Trace2DStyle = new: unit -> Trace2DStyle static member Bar: ?Name: string * ?Visible: Visible * ?ShowLegend: bool * ?LegendRank: int * ?LegendGroup: string * ?LegendGroupTitle: Title * ?Opacity: float * ?Ids: seq<#IConvertible> * ?X: seq<#IConvertible> * ?X0: #IConvertible * ?DX: #IConvertible * ?Y: seq<#IConvertible> * ?Y0: #IConvertible * ?DY: #IConvertible * ?Base: #IConvertible * ?Width: 'i * ?MultiWidth: seq<'i> * ?Offset: 'j * ?MultiOffset: seq<'j> * ?Text: 'k * ?MultiText: seq<'k> * ?TextPosition: TextPosition * ?MultiTextPosition: seq<TextPosition> * ?TextTemplate: string * ?MultiTextTemplate: seq<string> * ?HoverText: string * ?MultiHoverText: seq<string> * ?HoverInfo: HoverInfo * ?HoverTemplate: string * ?MultiHoverTemplate: seq<string> * ?XHoverFormat: string * ?YHoverFormat: string * ?Meta: string * ?CustomData: seq<#IConvertible> * ?XAxis: LinearAxisId * ?YAxis: LinearAxisId * ?Orientation: Orientation * ?AlignmentGroup: string * ?OffsetGroup: string * ?XPeriod: #IConvertible * ?XPeriodAlignment: PeriodAlignment * ?XPeriod0: #IConvertible * ?YPeriod: #IConvertible * ?YPeriodAlignment: PeriodAlignment * ?YPeriod0: #IConvertible * ?Marker: Marker * ?TextAngle: float * ?TextFont: Font * ?XError: Error * ?YError: Error * ?SelectedPoints: seq<#IConvertible> * ?Selected: Selection * ?Unselected: Selection * ?ClipOnAxis: bool * ?Constraintext: ConstrainText * ?HoverLabel: Hoverlabel * ?InsideTextAnchor: InsideTextAnchor * ?InsideTextFont: Font * ?OutsideTextFont: Font * ?XCalendar: Calendar * ?YCalendar: Calendar * ?UIRevision: string -> ('T -> 'T) (requires 'i :> IConvertible and 'j :> IConvertible and 'k :> IConvertible and 'T :> Trace) static member BoxPlot: ?Name: string * ?Visible: Visible * ?ShowLegend: bool * ?LegendRank: int * ?LegendGroup: string * ?LegendGroupTitle: Title * ?Opacity: float * ?Ids: seq<#IConvertible> * ?X: seq<#IConvertible> * ?X0: #IConvertible * ?DX: #IConvertible * ?Y: seq<#IConvertible> * ?Y0: #IConvertible * ?DY: #IConvertible * ?Width: float * ?Text: 'h * ?MultiText: seq<'h> * ?HoverText: string * ?MultiHoverText: seq<string> * ?HoverInfo: HoverInfo * ?HoverTemplate: string * ?MultiHoverTemplate: seq<string> * ?XHoverFormat: string * ?YHoverFormat: string * ?Meta: string * ?CustomData: seq<#IConvertible> * ?XAxis: LinearAxisId * ?YAxis: LinearAxisId * ?Orientation: Orientation * ?AlignmentGroup: string * ?OffsetGroup: string * ?XPeriod: #IConvertible * ?XPeriodAlignment: PeriodAlignment * ?XPeriod0: #IConvertible * ?YPeriod: #IConvertible * ?YPeriodAlignment: PeriodAlignment * ?YPeriod0: #IConvertible * ?Marker: Marker * ?Line: Line * ?BoxMean: BoxMean * ?BoxPoints: BoxPoints * ?Notched: bool * ?NotchWidth: float * ?WhiskerWidth: float * ?Q1: seq<IConvertible> * ?Median: seq<IConvertible> * ?Q3: seq<IConvertible> * ?LowerFence: seq<IConvertible> * ?UpperFence: seq<IConvertible> * ?NotchSpan: seq<IConvertible> * ?Mean: seq<IConvertible> * ?SD: seq<IConvertible> * ?QuartileMethod: QuartileMethod * ?SelectedPoints: seq<#IConvertible> * ?Selected: Selection * ?Unselected: Selection * ?FillColor: Color * ?HoverLabel: Hoverlabel * ?HoverOn: HoverOn * ?PointPos: float * ?Jitter: float * ?XCalendar: Calendar * ?YCalendar: Calendar * ?UIRevision: string -> ('T -> 'T) (requires 'h :> IConvertible and 'T :> Trace) static member Candlestick: ?Name: string * ?Visible: Visible * ?ShowLegend: bool * ?LegendRank: int * ?LegendGroup: string * ?LegendGroupTitle: Title * ?Opacity: float * ?Ids: seq<#IConvertible> * ?X: seq<#IConvertible> * ?Close: seq<#IConvertible> * ?Open: seq<#IConvertible> * ?High: seq<#IConvertible> * ?Low: seq<#IConvertible> * ?Text: 'g * ?MultiText: seq<'g> * ?HoverText: string * ?MultiHoverText: seq<string> * ?HoverInfo: HoverInfo * ?XHoverFormat: string * ?YHoverFormat: string * ?Meta: string * ?CustomData: seq<#IConvertible> * ?XAxis: LinearAxisId * ?YAxis: LinearAxisId * ?XPeriod: #IConvertible * ?XPeriodAlignment: PeriodAlignment * ?XPeriod0: #IConvertible * ?YPeriod: #IConvertible * ?YPeriodAlignment: PeriodAlignment * ?YPeriod0: #IConvertible * ?Line: Line * ?WhiskerWidth: float * ?SelectedPoints: seq<#IConvertible> * ?Increasing: FinanceMarker * ?Decreasing: FinanceMarker * ?HoverLabel: Hoverlabel * ?XCalendar: Calendar * ?UIRevision: string -> ('T -> 'T) (requires 'g :> IConvertible and 'T :> Trace) static member Contour: ?Name: string * ?Visible: Visible * ?ShowLegend: bool * ?LegendRank: int * ?LegendGroup: string * ?LegendGroupTitle: Title * ?Opacity: float * ?Ids: seq<#IConvertible> * ?X: seq<#IConvertible> * ?X0: #IConvertible * ?DX: #IConvertible * ?XType: CoordinateType * ?Y: seq<#IConvertible> * ?Y0: #IConvertible * ?DY: #IConvertible * ?YType: CoordinateType * ?Z: seq<#seq<'i>> * ?Text: 'j * ?MultiText: seq<'j> * ?HoverText: string * ?MultiHoverText: seq<string> * ?HoverInfo: HoverInfo * ?HoverTemplate: string * ?MultiHoverTemplate: seq<string> * ?XHoverFormat: string * ?YHoverFormat: string * ?Meta: string * ?CustomData: seq<#IConvertible> * ?XAxis: LinearAxisId * ?YAxis: LinearAxisId * ?ColorAxis: SubPlotId * ?XPeriod: #IConvertible * ?XPeriodAlignment: PeriodAlignment * ?XPeriod0: #IConvertible * ?YPeriod: #IConvertible * ?YPeriodAlignment: PeriodAlignment * ?YPeriod0: #IConvertible * ?Line: Line * ?ColorBar: ColorBar * ?AutoColorScale: bool * ?ColorScale: Colorscale * ?ShowScale: bool * ?ReverseScale: bool * ?ZAuto: bool * ?ZHoverFormat: string * ?ZMax: #IConvertible * ?ZMid: #IConvertible * ?ZMin: #IConvertible * ?AutoContour: bool * ?ConnectGaps: bool * ?Contours: Contours * ?FillColor: Color * ?HoverLabel: Hoverlabel * ?HoverOnGaps: bool * ?NContours: int * ?Transpose: bool * ?XCalendar: Calendar * ?YCalendar: Calendar * ?UIRevision: string -> ('T -> 'T) (requires 'i :> IConvertible and 'j :> IConvertible and 'T :> Trace) static member Funnel: ?Name: string * ?Visible: Visible * ?ShowLegend: bool * ?LegendRank: int * ?LegendGroup: string * ?LegendGroupTitle: Title * ?Opacity: float * ?Ids: seq<#IConvertible> * ?X: seq<#IConvertible> * ?X0: #IConvertible * ?DX: #IConvertible * ?Y: seq<#IConvertible> * ?Y0: #IConvertible * ?DY: #IConvertible * ?Width: float * ?Offset: float * ?Text: 'h * ?MultiText: seq<'h> * ?TextPosition: TextPosition * ?MultiTextPosition: seq<TextPosition> * ?TextTemplate: string * ?MultiTextTemplate: seq<string> * ?HoverText: string * ?MultiHoverText: seq<string> * ?HoverInfo: HoverInfo * ?HoverTemplate: string * ?MultiHoverTemplate: seq<string> * ?XHoverFormat: string * ?YHoverFormat: string * ?Meta: string * ?CustomData: seq<#IConvertible> * ?XAxis: LinearAxisId * ?YAxis: LinearAxisId * ?Orientation: Orientation * ?AlignmentGroup: string * ?OffsetGroup: string * ?XPeriod: #IConvertible * ?XPeriodAlignment: PeriodAlignment * ?XPeriod0: #IConvertible * ?YPeriod: #IConvertible * ?YPeriodAlignment: PeriodAlignment * ?YPeriod0: #IConvertible * ?Marker: Marker * ?TextAngle: float * ?TextFont: Font * ?TextInfo: TextInfo * ?SelectedPoints: seq<#IConvertible> * ?ClipOnAxis: bool * ?Connector: FunnelConnector * ?Constraintext: ConstrainText * ?HoverLabel: Hoverlabel * ?InsideTextAnchor: InsideTextAnchor * ?InsideTextFont: Font * ?OutsideTextFont: Font * ?UIRevision: string -> ('o -> 'o) (requires 'h :> IConvertible and 'o :> Trace) static member Heatmap: ?Name: string * ?Visible: Visible * ?ShowLegend: bool * ?LegendRank: int * ?LegendGroup: string * ?LegendGroupTitle: Title * ?Opacity: float * ?Ids: seq<#IConvertible> * ?X: seq<#IConvertible> * ?X0: #IConvertible * ?DX: #IConvertible * ?XType: CoordinateType * ?XGap: int * ?Y: seq<#IConvertible> * ?Y0: #IConvertible * ?DY: #IConvertible * ?YType: CoordinateType * ?YGap: int * ?Z: seq<#seq<'i>> * ?Text: 'j * ?MultiText: seq<'j> * ?HoverText: string * ?MultiHoverText: seq<string> * ?HoverInfo: HoverInfo * ?HoverTemplate: string * ?MultiHoverTemplate: seq<string> * ?XHoverFormat: string * ?YHoverFormat: string * ?Meta: string * ?CustomData: seq<#IConvertible> * ?XAxis: LinearAxisId * ?YAxis: LinearAxisId * ?ColorAxis: SubPlotId * ?XPeriod: #IConvertible * ?XPeriodAlignment: PeriodAlignment * ?XPeriod0: #IConvertible * ?YPeriod: #IConvertible * ?YPeriodAlignment: PeriodAlignment * ?YPeriod0: #IConvertible * ?ColorBar: ColorBar * ?AutoColorScale: bool * ?ColorScale: Colorscale * ?ShowScale: bool * ?ReverseScale: bool * ?ZAuto: bool * ?ZHoverFormat: string * ?ZMax: #IConvertible * ?ZMid: #IConvertible * ?ZMin: #IConvertible * ?ZSmooth: SmoothAlg * ?ConnectGaps: bool * ?HoverLabel: Hoverlabel * ?HoverOnGaps: bool * ?Transpose: bool * ?XCalendar: Calendar * ?YCalendar: Calendar * ?UIRevision: string -> ('T -> 'T) (requires 'i :> IConvertible and 'j :> IConvertible and 'T :> Trace) static member Histogram: ?Name: string * ?Visible: Visible * ?ShowLegend: bool * ?LegendRank: int * ?LegendGroup: string * ?LegendGroupTitle: Title * ?Opacity: float * ?Ids: seq<#IConvertible> * ?X: seq<#IConvertible> * ?Y: seq<#IConvertible> * ?Text: 'd * ?MultiText: seq<'d> * ?HoverText: string * ?MultiHoverText: seq<string> * ?HoverInfo: HoverInfo * ?HoverTemplate: string * ?MultiHoverTemplate: seq<string> * ?XHoverFormat: string * ?YHoverFormat: string * ?Meta: string * ?CustomData: seq<#IConvertible> * ?XAxis: LinearAxisId * ?YAxis: LinearAxisId * ?Orientation: Orientation * ?HistFunc: HistFunc * ?HistNorm: HistNorm * ?AlignmentGroup: string * ?OffsetGroup: string * ?NBinsX: int * ?NBinsY: int * ?AutoBinX: bool * ?AutoBinY: bool * ?BinGroup: string * ?XBins: Bins * ?YBins: Bins * ?Marker: Marker * ?Line: Line * ?XError: Error * ?YError: Error * ?SelectedPoints: seq<#IConvertible> * ?Selected: Selection * ?Unselected: Selection * ?Cumulative: Cumulative * ?HoverLabel: Hoverlabel * ?XCalendar: Calendar * ?YCalendar: Calendar * ?UIRevision: string -> ('T -> 'T) (requires 'd :> IConvertible and 'T :> Trace) static member Histogram2D: ?Name: string * ?Visible: Visible * ?ShowLegend: bool * ?LegendRank: int * ?LegendGroup: string * ?LegendGroupTitle: Title * ?Opacity: float * ?Ids: seq<#IConvertible> * ?X: seq<#IConvertible> * ?XGap: int * ?Y: seq<#IConvertible> * ?YGap: int * ?Z: seq<#seq<'e>> * ?HoverInfo: HoverInfo * ?HoverTemplate: string * ?MultiHoverTemplate: seq<string> * ?XHoverFormat: string * ?YHoverFormat: string * ?Meta: string * ?CustomData: seq<#IConvertible> * ?XAxis: LinearAxisId * ?YAxis: LinearAxisId * ?ColorAxis: SubPlotId * ?HistFunc: HistFunc * ?HistNorm: HistNorm * ?NBinsX: int * ?NBinsY: int * ?AutoBinX: bool * ?AutoBinY: bool * ?BinGroup: string * ?XBinGroup: string * ?XBins: Bins * ?YBinGroup: string * ?YBins: Bins * ?Marker: Marker * ?ColorBar: ColorBar * ?AutoColorScale: bool * ?ColorScale: Colorscale * ?ShowScale: bool * ?ReverseScale: bool * ?ZAuto: bool * ?ZHoverFormat: string * ?ZMin: float * ?ZMid: float * ?ZMax: float * ?ZSmooth: SmoothAlg * ?HoverLabel: Hoverlabel * ?XCalendar: Calendar * ?YCalendar: Calendar * ?UIRevision: string -> ('T -> 'T) (requires 'e :> IConvertible and 'T :> Trace) static member Histogram2DContour: ?Name: string * ?Visible: Visible * ?ShowLegend: bool * ?LegendRank: int * ?LegendGroup: string * ?LegendGroupTitle: Title * ?Opacity: float * ?Ids: seq<#IConvertible> * ?X: seq<#IConvertible> * ?Y: seq<#IConvertible> * ?Z: seq<#seq<'e>> * ?HoverInfo: HoverInfo * ?HoverTemplate: string * ?MultiHoverTemplate: seq<string> * ?XHoverFormat: string * ?YHoverFormat: string * ?Meta: string * ?CustomData: seq<#IConvertible> * ?XAxis: LinearAxisId * ?YAxis: LinearAxisId * ?ColorAxis: SubPlotId * ?HistFunc: HistFunc * ?HistNorm: HistNorm * ?NBinsX: int * ?NBinsY: int * ?AutoBinX: bool * ?AutoBinY: bool * ?BinGroup: string * ?XBinGroup: string * ?XBins: Bins * ?YBinGroup: string * ?YBins: Bins * ?Marker: Marker * ?Line: Line * ?ColorBar: ColorBar * ?AutoColorScale: bool * ?ColorScale: Colorscale * ?ShowScale: bool * ?ReverseScale: bool * ?ZAuto: bool * ?ZHoverFormat: string * ?Zmin: float * ?Zmid: float * ?Zmax: float * ?AutoContour: bool * ?Contours: Contours * ?HoverLabel: Hoverlabel * ?NContours: int * ?XCalendar: Calendar * ?YCalendar: Calendar * ?UIRevision: string -> ('T -> 'T) (requires 'e :> IConvertible and 'T :> Trace) ...
<summary> Create various functions for applying 2D chart styles to traces </summary>

--------------------
new: unit -> Trace2DStyle
static member Trace2DStyle.Scatter: ?Name: string * ?Visible: StyleParam.Visible * ?ShowLegend: bool * ?LegendRank: int * ?LegendGroup: string * ?LegendGroupTitle: Title * ?Opacity: float * ?Mode: StyleParam.Mode * ?Ids: seq<#System.IConvertible> * ?X: seq<#System.IConvertible> * ?X0: #System.IConvertible * ?DX: #System.IConvertible * ?Y: seq<#System.IConvertible> * ?Y0: #System.IConvertible * ?DY: #System.IConvertible * ?Text: 'h * ?MultiText: seq<'h> * ?TextPosition: StyleParam.TextPosition * ?MultiTextPosition: seq<StyleParam.TextPosition> * ?TextTemplate: string * ?MultiTextTemplate: seq<string> * ?HoverText: string * ?MultiHoverText: seq<string> * ?HoverInfo: StyleParam.HoverInfo * ?HoverTemplate: string * ?MultiHoverTemplate: seq<string> * ?XHoverFormat: string * ?YHoverFormat: string * ?Meta: string * ?CustomData: seq<#System.IConvertible> * ?XAxis: StyleParam.LinearAxisId * ?YAxis: StyleParam.LinearAxisId * ?Orientation: StyleParam.Orientation * ?GroupNorm: StyleParam.GroupNorm * ?StackGroup: string * ?XPeriod: #System.IConvertible * ?XPeriodAlignment: StyleParam.PeriodAlignment * ?XPeriod0: #System.IConvertible * ?YPeriod: #System.IConvertible * ?YPeriodAlignment: StyleParam.PeriodAlignment * ?YPeriod0: #System.IConvertible * ?Marker: TraceObjects.Marker * ?Line: Line * ?TextFont: Font * ?XError: TraceObjects.Error * ?YError: TraceObjects.Error * ?SelectedPoints: seq<#System.IConvertible> * ?Selected: TraceObjects.Selection * ?Unselected: TraceObjects.Selection * ?ClipOnAxis: bool * ?ConnectGaps: bool * ?Fill: StyleParam.Fill * ?FillColor: Color * ?HoverLabel: LayoutObjects.Hoverlabel * ?HoverOn: StyleParam.HoverOn * ?StackGaps: StyleParam.StackGaps * ?XCalendar: StyleParam.Calendar * ?YCalendar: StyleParam.Calendar * ?UIRevision: string -> ('T -> 'T) (requires 'h :> System.IConvertible and 'T :> Trace)
argument X: seq<int> option
<summary> Create a function that applies the styles of a scatter plot to a Trace object </summary>
<param name="Name">Sets the trace name. The trace name appear as the legend item and on hover.</param>
<param name="Visible">Determines whether or not this trace is visible. If "legendonly", the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).</param>
<param name="ShowLegend">Determines whether or not an item corresponding to this trace is shown in the legend.</param>
<param name="LegendRank">Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with `"reversed" `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items.</param>
<param name="LegendGroup">Sets the legend group for this trace. Traces part of the same legend group hide/show at the same time when toggling legend items.</param>
<param name="LegendGroupTitle">Sets the legend group title for this trace.</param>
<param name="Opacity">Sets the opacity of the trace.</param>
<param name="Mode">Determines the drawing mode for this scatter trace. If the provided `mode` includes "text" then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is "lines+markers". Otherwise, "lines".</param>
<param name="Ids">Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.</param>
<param name="X">Sets the x coordinates.</param>
<param name="X0">Alternate to `x`. Builds a linear space of x coordinates. Use with `dx` where `x0` is the starting coordinate and `dx` the step.</param>
<param name="DX">Sets the x coordinate step. See `x0` for more info.</param>
<param name="Y">Sets the y coordinates.</param>
<param name="Y0">Alternate to `y`. Builds a linear space of y coordinates. Use with `dy` where `y0` is the starting coordinate and `dy` the step.</param>
<param name="DY">Sets the y coordinate step. See `y0` for more info.</param>
<param name="Text">Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. If trace `hoverinfo` contains a "text" flag and "hovertext" is not set, these elements will be seen in the hover labels.</param>
<param name="MultiText">Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. If trace `hoverinfo` contains a "text" flag and "hovertext" is not set, these elements will be seen in the hover labels.</param>
<param name="TextPosition">Sets the positions of the `text` elements with respects to the (x,y) coordinates.</param>
<param name="MultiTextPosition">Sets the positions of the `text` elements with respects to the (x,y) coordinates.</param>
<param name="TextTemplate">Template string used for rendering the information text that appear on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available.</param>
<param name="MultiTextTemplate">Template string used for rendering the information text that appear on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available.</param>
<param name="HoverText">Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a "text" flag.</param>
<param name="MultiHoverText">Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a "text" flag.</param>
<param name="HoverInfo">Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.</param>
<param name="HoverTemplate">Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, "xother" will be added to those with different x positions from the first point. An underscore before or after "(x|y)other" will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. variable `norm` Anything contained in tag `&lt;extra&gt;` is displayed in the secondary box, for example "&lt;extra&gt;{fullData.name}&lt;/extra&gt;". To hide the secondary box completely, use an empty tag `&lt;extra&gt;&lt;/extra&gt;`.</param>
<param name="MultiHoverTemplate">Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, "xother" will be added to those with different x positions from the first point. An underscore before or after "(x|y)other" will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. variable `norm` Anything contained in tag `&lt;extra&gt;` is displayed in the secondary box, for example "&lt;extra&gt;{fullData.name}&lt;/extra&gt;". To hide the secondary box completely, use an empty tag `&lt;extra&gt;&lt;/extra&gt;`.</param>
<param name="XHoverFormat">Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: "%h" for half of the year as a decimal number as well as "%{n}f" for fractional seconds with n digits. For example, "2016-10-13 09:15:23.456" with tickformat "%H~%M~%S.%2f" would display "09~15~23.46"By default the values are formatted using `xaxis.hoverformat`.</param>
<param name="YHoverFormat">Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: "%h" for half of the year as a decimal number as well as "%{n}f" for fractional seconds with n digits. For example, "2016-10-13 09:15:23.456" with tickformat "%H~%M~%S.%2f" would display "09~15~23.46"By default the values are formatted using `xaxis.hoverformat`.</param>
<param name="Meta">Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index.</param>
<param name="CustomData">Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, "scatter" traces also appends customdata items in the markers DOM elements</param>
<param name="XAxis">Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If "x" (the default value), the x coordinates refer to `layout.xaxis`. If "x2", the x coordinates refer to `layout.xaxis2`, and so on.</param>
<param name="YAxis">Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If "y" (the default value), the y coordinates refer to `layout.yaxis`. If "y2", the y coordinates refer to `layout.yaxis2`, and so on.</param>
<param name="Orientation">Only relevant when `stackgroup` is used, and only the first `orientation` found in the `stackgroup` will be used - including if `visible` is "legendonly" but not if it is `false`. Sets the stacking direction. With "v" ("h"), the y (x) values of subsequent traces are added. Also affects the default value of `fill`.</param>
<param name="GroupNorm">Only relevant when `stackgroup` is used, and only the first `groupnorm` found in the `stackgroup` will be used - including if `visible` is "legendonly" but not if it is `false`. Sets the normalization for the sum of this `stackgroup`. With "fraction", the value of each trace at each location is divided by the sum of all trace values at that location. "percent" is the same but multiplied by 100 to show percentages. If there are multiple subplots, or multiple `stackgroup`s on one subplot, each will be normalized within its own set.</param>
<param name="StackGroup">Set several scatter traces (on the same subplot) to the same stackgroup in order to add their y values (or their x values if `orientation` is "h"). If blank or omitted this trace will not be stacked. Stacking also turns `fill` on by default, using "tonexty" ("tonextx") if `orientation` is "h" ("v") and sets the default `mode` to "lines" irrespective of point count. You can only stack on a numeric (linear or log) axis. Traces in a `stackgroup` will only fill to (or be filled to) other traces in the same group. With multiple `stackgroup`s or some traces stacked and some not, if fill-linked traces are not already consecutive, the later ones will be pushed down in the drawing order.</param>
<param name="XPeriod">Only relevant when the axis `type` is "date". Sets the period positioning in milliseconds or "M&lt;n&gt;" on the x axis. Special values in the form of "M&lt;n&gt;" could be used to declare the number of months. In this case `n` must be a positive integer.</param>
<param name="XPeriodAlignment">Only relevant when the axis `type` is "date". Sets the alignment of data points on the x axis.</param>
<param name="XPeriod0">Only relevant when the axis `type` is "date". Sets the base for period positioning in milliseconds or date string on the x0 axis. When `x0period` is round number of weeks, the `x0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01.</param>
<param name="YPeriod">Only relevant when the axis `type` is "date". Sets the period positioning in milliseconds or "M&lt;n&gt;" on the y axis. Special values in the form of "M&lt;n&gt;" could be used to declare the number of months. In this case `n` must be a positive integer.</param>
<param name="YPeriodAlignment">Only relevant when the axis `type` is "date". Sets the alignment of data points on the y axis.</param>
<param name="YPeriod0">Only relevant when the axis `type` is "date". Sets the base for period positioning in milliseconds or date string on the y0 axis. When `y0period` is round number of weeks, the `y0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01.</param>
<param name="Marker">Sets the marker of this trace.</param>
<param name="Line">Sets the line of this trace.</param>
<param name="TextFont">Sets the text font of this trace.</param>
<param name="XError">Sets the x error of this trace.</param>
<param name="YError">Sets the y error of this trace.</param>
<param name="SelectedPoints">Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect.</param>
<param name="Selected">Sets the style of selected points of this trace.</param>
<param name="Unselected">Sets the style of unselected points of this trace.</param>
<param name="ClipOnAxis">Determines whether or not markers and text nodes are clipped about the subplot axes. To show markers and text nodes above axis lines and tick labels, make sure to set `xaxis.layer` and `yaxis.layer` to "below traces".</param>
<param name="ConnectGaps">Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected.</param>
<param name="Fill">Sets the area to fill with a solid color. Defaults to "none" unless this trace is stacked, then it gets "tonexty" ("tonextx") if `orientation` is "v" ("h") Use with `fillcolor` if not "none". "tozerox" and "tozeroy" fill to x=0 and y=0 respectively. "tonextx" and "tonexty" fill between the endpoints of this trace and the endpoints of the trace before it, connecting those endpoints with straight lines (to make a stacked area graph); if there is no trace before it, they behave like "tozerox" and "tozeroy". "toself" connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. "tonext" fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like "toself" if there is no trace before it. "tonext" should not be used if one trace does not enclose the other. Traces in a `stackgroup` will only fill to (or be filled to) other traces in the same group. With multiple `stackgroup`s or some traces stacked and some not, if fill-linked traces are not already consecutive, the later ones will be pushed down in the drawing order.</param>
<param name="FillColor">Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available.</param>
<param name="HoverLabel">Sets the style of the hoverlabels of this trace.</param>
<param name="HoverOn">Do the hover effects highlight individual points (markers or line points) or do they highlight filled regions? If the fill is "toself" or "tonext" and there are no markers or text, then the default is "fills", otherwise it is "points".</param>
<param name="StackGaps">Only relevant when `stackgroup` is used, and only the first `stackgaps` found in the `stackgroup` will be used - including if `visible` is "legendonly" but not if it is `false`. Determines how we handle locations at which other traces in this group have data but this one does not. With "infer zero" we insert a zero at these locations. With "interpolate" we linearly interpolate between existing values, and extrapolate a constant beyond the existing values.</param>
<param name="XCalendar">Sets the calendar system to use with `x` date data.</param>
<param name="YCalendar">Sets the calendar system to use with `y` date data.</param>
<param name="UIRevision">Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves.</param>
argument Y: seq<int> option
<summary> Create a function that applies the styles of a scatter plot to a Trace object </summary>
<param name="Name">Sets the trace name. The trace name appear as the legend item and on hover.</param>
<param name="Visible">Determines whether or not this trace is visible. If "legendonly", the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).</param>
<param name="ShowLegend">Determines whether or not an item corresponding to this trace is shown in the legend.</param>
<param name="LegendRank">Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with `"reversed" `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items.</param>
<param name="LegendGroup">Sets the legend group for this trace. Traces part of the same legend group hide/show at the same time when toggling legend items.</param>
<param name="LegendGroupTitle">Sets the legend group title for this trace.</param>
<param name="Opacity">Sets the opacity of the trace.</param>
<param name="Mode">Determines the drawing mode for this scatter trace. If the provided `mode` includes "text" then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is "lines+markers". Otherwise, "lines".</param>
<param name="Ids">Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.</param>
<param name="X">Sets the x coordinates.</param>
<param name="X0">Alternate to `x`. Builds a linear space of x coordinates. Use with `dx` where `x0` is the starting coordinate and `dx` the step.</param>
<param name="DX">Sets the x coordinate step. See `x0` for more info.</param>
<param name="Y">Sets the y coordinates.</param>
<param name="Y0">Alternate to `y`. Builds a linear space of y coordinates. Use with `dy` where `y0` is the starting coordinate and `dy` the step.</param>
<param name="DY">Sets the y coordinate step. See `y0` for more info.</param>
<param name="Text">Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. If trace `hoverinfo` contains a "text" flag and "hovertext" is not set, these elements will be seen in the hover labels.</param>
<param name="MultiText">Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. If trace `hoverinfo` contains a "text" flag and "hovertext" is not set, these elements will be seen in the hover labels.</param>
<param name="TextPosition">Sets the positions of the `text` elements with respects to the (x,y) coordinates.</param>
<param name="MultiTextPosition">Sets the positions of the `text` elements with respects to the (x,y) coordinates.</param>
<param name="TextTemplate">Template string used for rendering the information text that appear on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available.</param>
<param name="MultiTextTemplate">Template string used for rendering the information text that appear on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available.</param>
<param name="HoverText">Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a "text" flag.</param>
<param name="MultiHoverText">Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a "text" flag.</param>
<param name="HoverInfo">Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.</param>
<param name="HoverTemplate">Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, "xother" will be added to those with different x positions from the first point. An underscore before or after "(x|y)other" will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. variable `norm` Anything contained in tag `&lt;extra&gt;` is displayed in the secondary box, for example "&lt;extra&gt;{fullData.name}&lt;/extra&gt;". To hide the secondary box completely, use an empty tag `&lt;extra&gt;&lt;/extra&gt;`.</param>
<param name="MultiHoverTemplate">Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, "xother" will be added to those with different x positions from the first point. An underscore before or after "(x|y)other" will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. variable `norm` Anything contained in tag `&lt;extra&gt;` is displayed in the secondary box, for example "&lt;extra&gt;{fullData.name}&lt;/extra&gt;". To hide the secondary box completely, use an empty tag `&lt;extra&gt;&lt;/extra&gt;`.</param>
<param name="XHoverFormat">Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: "%h" for half of the year as a decimal number as well as "%{n}f" for fractional seconds with n digits. For example, "2016-10-13 09:15:23.456" with tickformat "%H~%M~%S.%2f" would display "09~15~23.46"By default the values are formatted using `xaxis.hoverformat`.</param>
<param name="YHoverFormat">Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: "%h" for half of the year as a decimal number as well as "%{n}f" for fractional seconds with n digits. For example, "2016-10-13 09:15:23.456" with tickformat "%H~%M~%S.%2f" would display "09~15~23.46"By default the values are formatted using `xaxis.hoverformat`.</param>
<param name="Meta">Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index.</param>
<param name="CustomData">Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, "scatter" traces also appends customdata items in the markers DOM elements</param>
<param name="XAxis">Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If "x" (the default value), the x coordinates refer to `layout.xaxis`. If "x2", the x coordinates refer to `layout.xaxis2`, and so on.</param>
<param name="YAxis">Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If "y" (the default value), the y coordinates refer to `layout.yaxis`. If "y2", the y coordinates refer to `layout.yaxis2`, and so on.</param>
<param name="Orientation">Only relevant when `stackgroup` is used, and only the first `orientation` found in the `stackgroup` will be used - including if `visible` is "legendonly" but not if it is `false`. Sets the stacking direction. With "v" ("h"), the y (x) values of subsequent traces are added. Also affects the default value of `fill`.</param>
<param name="GroupNorm">Only relevant when `stackgroup` is used, and only the first `groupnorm` found in the `stackgroup` will be used - including if `visible` is "legendonly" but not if it is `false`. Sets the normalization for the sum of this `stackgroup`. With "fraction", the value of each trace at each location is divided by the sum of all trace values at that location. "percent" is the same but multiplied by 100 to show percentages. If there are multiple subplots, or multiple `stackgroup`s on one subplot, each will be normalized within its own set.</param>
<param name="StackGroup">Set several scatter traces (on the same subplot) to the same stackgroup in order to add their y values (or their x values if `orientation` is "h"). If blank or omitted this trace will not be stacked. Stacking also turns `fill` on by default, using "tonexty" ("tonextx") if `orientation` is "h" ("v") and sets the default `mode` to "lines" irrespective of point count. You can only stack on a numeric (linear or log) axis. Traces in a `stackgroup` will only fill to (or be filled to) other traces in the same group. With multiple `stackgroup`s or some traces stacked and some not, if fill-linked traces are not already consecutive, the later ones will be pushed down in the drawing order.</param>
<param name="XPeriod">Only relevant when the axis `type` is "date". Sets the period positioning in milliseconds or "M&lt;n&gt;" on the x axis. Special values in the form of "M&lt;n&gt;" could be used to declare the number of months. In this case `n` must be a positive integer.</param>
<param name="XPeriodAlignment">Only relevant when the axis `type` is "date". Sets the alignment of data points on the x axis.</param>
<param name="XPeriod0">Only relevant when the axis `type` is "date". Sets the base for period positioning in milliseconds or date string on the x0 axis. When `x0period` is round number of weeks, the `x0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01.</param>
<param name="YPeriod">Only relevant when the axis `type` is "date". Sets the period positioning in milliseconds or "M&lt;n&gt;" on the y axis. Special values in the form of "M&lt;n&gt;" could be used to declare the number of months. In this case `n` must be a positive integer.</param>
<param name="YPeriodAlignment">Only relevant when the axis `type` is "date". Sets the alignment of data points on the y axis.</param>
<param name="YPeriod0">Only relevant when the axis `type` is "date". Sets the base for period positioning in milliseconds or date string on the y0 axis. When `y0period` is round number of weeks, the `y0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01.</param>
<param name="Marker">Sets the marker of this trace.</param>
<param name="Line">Sets the line of this trace.</param>
<param name="TextFont">Sets the text font of this trace.</param>
<param name="XError">Sets the x error of this trace.</param>
<param name="YError">Sets the y error of this trace.</param>
<param name="SelectedPoints">Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect.</param>
<param name="Selected">Sets the style of selected points of this trace.</param>
<param name="Unselected">Sets the style of unselected points of this trace.</param>
<param name="ClipOnAxis">Determines whether or not markers and text nodes are clipped about the subplot axes. To show markers and text nodes above axis lines and tick labels, make sure to set `xaxis.layer` and `yaxis.layer` to "below traces".</param>
<param name="ConnectGaps">Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected.</param>
<param name="Fill">Sets the area to fill with a solid color. Defaults to "none" unless this trace is stacked, then it gets "tonexty" ("tonextx") if `orientation` is "v" ("h") Use with `fillcolor` if not "none". "tozerox" and "tozeroy" fill to x=0 and y=0 respectively. "tonextx" and "tonexty" fill between the endpoints of this trace and the endpoints of the trace before it, connecting those endpoints with straight lines (to make a stacked area graph); if there is no trace before it, they behave like "tozerox" and "tozeroy". "toself" connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. "tonext" fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like "toself" if there is no trace before it. "tonext" should not be used if one trace does not enclose the other. Traces in a `stackgroup` will only fill to (or be filled to) other traces in the same group. With multiple `stackgroup`s or some traces stacked and some not, if fill-linked traces are not already consecutive, the later ones will be pushed down in the drawing order.</param>
<param name="FillColor">Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available.</param>
<param name="HoverLabel">Sets the style of the hoverlabels of this trace.</param>
<param name="HoverOn">Do the hover effects highlight individual points (markers or line points) or do they highlight filled regions? If the fill is "toself" or "tonext" and there are no markers or text, then the default is "fills", otherwise it is "points".</param>
<param name="StackGaps">Only relevant when `stackgroup` is used, and only the first `stackgaps` found in the `stackgroup` will be used - including if `visible` is "legendonly" but not if it is `false`. Determines how we handle locations at which other traces in this group have data but this one does not. With "infer zero" we insert a zero at these locations. With "interpolate" we linearly interpolate between existing values, and extrapolate a constant beyond the existing values.</param>
<param name="XCalendar">Sets the calendar system to use with `x` date data.</param>
<param name="YCalendar">Sets the calendar system to use with `y` date data.</param>
<param name="UIRevision">Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves.</param>
val ofTraceObject: useDefaults: bool -> trace: Trace -> GenericChart.GenericChart
<summary> Converts from a trace object and a layout object into GenericChart. If useDefaults = true, also sets the default Chart properties found in `Defaults` </summary>
val myTrace: Trace
Multiple items
type Trace = inherit DynamicObj new: traceTypeName: string -> Trace static member getColorAxisAnchor: trace: #Trace -> SubPlotId static member getColorBar: trace: #Trace -> ColorBar static member getDomain: trace: #Trace -> Domain static member getLine: trace: #Trace -> Line static member getMarker: trace: #Trace -> Marker static member getStackGroup: trace: #Trace -> string static member getXError: trace: #Trace -> Error static member getYError: trace: #Trace -> Error ...
<summary> A Trace object in the context of plotly charts contains the data to visualize and additional styling parameters. This is the base object that contains visualization-unspecific getters and setters for the underlying DynamicObj. Visualization-specific equivalents are suffixed with the respective trace subtype, e.g. `Trace2D` </summary>

--------------------
new: traceTypeName: string -> Trace
val withDynObj: GenericChart.GenericChart