Skip to content

Commit f22f990

Browse files
committed
finish parcat / parcoord chart apis
1 parent ee0c75c commit f22f990

File tree

3 files changed

+148
-101
lines changed

3 files changed

+148
-101
lines changed

src/Plotly.NET/ChartAPI/Chart2D.fs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ module Chart2D =
3030
Trace2D.initHeatmap style |> GenericChart.ofTraceObject useDefaults
3131

3232

33+
3334
/// <summary>
3435
/// Creates a Scatter chart. Scatter charts are the basis of Point, Line, and Bubble Charts in Plotly, and can be customized as such. We also provide abstractions for those: Chart.Line, Chart.Point, Chart.Bubble
3536
/// </summary>

src/Plotly.NET/ChartAPI/ChartDomain.fs

Lines changed: 143 additions & 101 deletions
Original file line numberDiff line numberDiff line change
@@ -672,151 +672,193 @@ module ChartDomain =
672672
[<Extension>]
673673
static member ParallelCoord
674674
(
675-
dims: seq<'key * #seq<'values>>,
676-
[<Optional; DefaultParameterValue(null)>] ?Range,
677-
[<Optional; DefaultParameterValue(null)>] ?Constraintrange,
678-
[<Optional; DefaultParameterValue(null)>] ?Color,
679-
[<Optional; DefaultParameterValue(null)>] ?Colorscale,
680-
[<Optional; DefaultParameterValue(null)>] ?Width,
681-
[<Optional; DefaultParameterValue(null)>] ?Dash,
682-
[<Optional; DefaultParameterValue(null)>] ?Domain,
683-
[<Optional; DefaultParameterValue(null)>] ?Labelfont,
684-
[<Optional; DefaultParameterValue(null)>] ?Tickfont,
685-
[<Optional; DefaultParameterValue(null)>] ?Rangefont,
686-
[<Optional; DefaultParameterValue(true)>] ?UseDefaults: bool
675+
dimensions: seq<Dimension>,
676+
[<Optional; DefaultParameterValue(null)>] ?Name : string,
677+
[<Optional; DefaultParameterValue(null)>] ?ShowLegend : bool,
678+
[<Optional; DefaultParameterValue(null)>] ?LineColor : Color,
679+
[<Optional; DefaultParameterValue(null)>] ?LineColorScale : StyleParam.Colorscale,
680+
[<Optional; DefaultParameterValue(null)>] ?ShowLineColorScale : bool,
681+
[<Optional; DefaultParameterValue(null)>] ?ReverseLineColorScale : bool,
682+
[<Optional; DefaultParameterValue(null)>] ?Line : Line,
683+
[<Optional; DefaultParameterValue(null)>] ?LabelAngle : int,
684+
[<Optional; DefaultParameterValue(null)>] ?LabelFont : Font,
685+
[<Optional; DefaultParameterValue(null)>] ?LabelSide : StyleParam.Side,
686+
[<Optional; DefaultParameterValue(null)>] ?RangeFont : Font,
687+
[<Optional; DefaultParameterValue(null)>] ?TickFont : Font,
688+
[<Optional; DefaultParameterValue(null)>] ?UseDefaults : bool
687689
) =
688-
689690
let useDefaults = defaultArg UseDefaults true
690691

691-
let dims' =
692-
dims
693-
|> Seq.map
694-
(fun (k, vals) ->
695-
Dimension.initParallel (
696-
Values = vals,
697-
?Range = Range,
698-
?ConstraintRange = Constraintrange,
699-
Label = k
700-
))
692+
let line =
693+
Line
694+
|> Option.defaultValue (Plotly.NET.Line.init ())
695+
|> Plotly.NET.Line.style (
696+
?Color = LineColor,
697+
?Colorscale = LineColorScale,
698+
?ShowScale = ShowLineColorScale,
699+
?ReverseScale = ReverseLineColorScale
700+
)
701701

702702
TraceDomain.initParallelCoord (
703703
TraceDomainStyle.ParallelCoord(
704-
Dimensions = dims',
705-
?Domain = Domain,
706-
?Labelfont = Labelfont,
707-
?Tickfont = Tickfont,
708-
?Rangefont = Rangefont
704+
Dimensions = dimensions,
705+
Line = line,
706+
?Name = Name ,
707+
?ShowLegend = ShowLegend,
708+
?LabelAngle = LabelAngle,
709+
?LabelFont = LabelFont ,
710+
?LabelSide = LabelSide ,
711+
?RangeFont = RangeFont ,
712+
?TickFont = TickFont
709713
)
710714
)
711-
|> TraceStyle.Line(?Width = Width, ?Color = Color, ?Dash = Dash, ?Colorscale = Colorscale)
712715
|> GenericChart.ofTraceObject useDefaults
713716

714-
715717
/// Computes the parallel coordinates plot
716718
[<Extension>]
717719
static member ParallelCoord
718720
(
719-
dims: seq<Dimension>,
720-
[<Optional; DefaultParameterValue(null)>] ?Color,
721-
[<Optional; DefaultParameterValue(null)>] ?Colorscale,
722-
[<Optional; DefaultParameterValue(null)>] ?Width,
723-
[<Optional; DefaultParameterValue(null)>] ?Dash,
724-
[<Optional; DefaultParameterValue(null)>] ?Domain,
725-
[<Optional; DefaultParameterValue(null)>] ?Labelfont,
726-
[<Optional; DefaultParameterValue(null)>] ?Tickfont,
727-
[<Optional; DefaultParameterValue(null)>] ?Rangefont,
728-
[<Optional; DefaultParameterValue(true)>] ?UseDefaults: bool
721+
keyValues: seq<string*seq<#IConvertible>>,
722+
[<Optional; DefaultParameterValue(null)>] ?Name : string,
723+
[<Optional; DefaultParameterValue(null)>] ?ShowLegend : bool,
724+
[<Optional; DefaultParameterValue(null)>] ?LineColor : Color,
725+
[<Optional; DefaultParameterValue(null)>] ?LineColorScale : StyleParam.Colorscale,
726+
[<Optional; DefaultParameterValue(null)>] ?ShowLineColorScale : bool,
727+
[<Optional; DefaultParameterValue(null)>] ?ReverseLineColorScale : bool,
728+
[<Optional; DefaultParameterValue(null)>] ?Line : Line,
729+
[<Optional; DefaultParameterValue(null)>] ?LabelAngle : int,
730+
[<Optional; DefaultParameterValue(null)>] ?LabelFont : Font,
731+
[<Optional; DefaultParameterValue(null)>] ?LabelSide : StyleParam.Side,
732+
[<Optional; DefaultParameterValue(null)>] ?RangeFont : Font,
733+
[<Optional; DefaultParameterValue(null)>] ?TickFont : Font,
734+
[<Optional; DefaultParameterValue(null)>] ?UseDefaults : bool
729735
) =
730736

731-
let useDefaults = defaultArg UseDefaults true
732-
733-
TraceDomain.initParallelCoord (
734-
TraceDomainStyle.ParallelCoord(
735-
Dimensions = dims,
736-
?Domain = Domain,
737-
?Labelfont = Labelfont,
738-
?Tickfont = Tickfont,
739-
?Rangefont = Rangefont
740-
)
737+
let dims =
738+
keyValues |> Seq.map (fun (key, vals) -> Dimension.initParallel (Label = key, Values = vals))
739+
740+
Chart.ParallelCoord(
741+
dimensions = dims,
742+
?Name = Name ,
743+
?ShowLegend = ShowLegend ,
744+
?LineColor = LineColor ,
745+
?LineColorScale = LineColorScale ,
746+
?ShowLineColorScale = ShowLineColorScale ,
747+
?ReverseLineColorScale = ReverseLineColorScale,
748+
?Line = Line ,
749+
?LabelAngle = LabelAngle ,
750+
?LabelFont = LabelFont ,
751+
?LabelSide = LabelSide ,
752+
?RangeFont = RangeFont ,
753+
?TickFont = TickFont ,
754+
?UseDefaults = UseDefaults
741755
)
742-
|> TraceStyle.Line(?Width = Width, ?Color = Color, ?Dash = Dash, ?Colorscale = Colorscale)
743-
|> GenericChart.ofTraceObject useDefaults
744756

745-
///Parallel categories diagram for multidimensional categorical data.
757+
/// Computes the parallel categories plot
746758
[<Extension>]
747759
static member ParallelCategories
748760
(
749-
dims: seq<'key * #seq<'values>>,
750-
[<Optional; DefaultParameterValue(null)>] ?Range,
751-
[<Optional; DefaultParameterValue(null)>] ?Constraintrange,
752-
[<Optional; DefaultParameterValue(null)>] ?Color,
753-
[<Optional; DefaultParameterValue(null)>] ?Colorscale,
754-
[<Optional; DefaultParameterValue(null)>] ?Width,
755-
[<Optional; DefaultParameterValue(null)>] ?Dash,
756-
[<Optional; DefaultParameterValue(null)>] ?Domain,
757-
[<Optional; DefaultParameterValue(null)>] ?Labelfont,
758-
[<Optional; DefaultParameterValue(null)>] ?Tickfont,
759-
[<Optional; DefaultParameterValue(null)>] ?Rangefont,
760-
[<Optional; DefaultParameterValue(true)>] ?UseDefaults: bool
761+
dimensions: seq<Dimension>,
762+
[<Optional; DefaultParameterValue(null)>] ?Name : string,
763+
[<Optional; DefaultParameterValue(null)>] ?ShowLegend : bool,
764+
[<Optional; DefaultParameterValue(null)>] ?Counts : int,
765+
[<Optional; DefaultParameterValue(null)>] ?LineColor : Color,
766+
[<Optional; DefaultParameterValue(null)>] ?LineShape : StyleParam.Shape,
767+
[<Optional; DefaultParameterValue(null)>] ?LineColorScale : StyleParam.Colorscale,
768+
[<Optional; DefaultParameterValue(null)>] ?ShowLineColorScale : bool,
769+
[<Optional; DefaultParameterValue(null)>] ?ReverseLineColorScale : bool,
770+
[<Optional; DefaultParameterValue(null)>] ?Line : Line,
771+
[<Optional; DefaultParameterValue(null)>] ?Arrangement : StyleParam.CategoryArrangement,
772+
[<Optional; DefaultParameterValue(null)>] ?BundleColors : bool,
773+
[<Optional; DefaultParameterValue(null)>] ?SortPaths : StyleParam.SortAlgorithm,
774+
[<Optional; DefaultParameterValue(null)>] ?LabelFont : Font,
775+
[<Optional; DefaultParameterValue(null)>] ?TickFont : Font,
776+
[<Optional; DefaultParameterValue(null)>] ?UseDefaults : bool
761777
) =
762778

763779
let useDefaults = defaultArg UseDefaults true
764-
765-
let dims' =
766-
dims
767-
|> Seq.map
768-
(fun (k, vals) ->
769-
Dimension.initParallel (
770-
Values = vals,
771-
?Range = Range,
772-
?ConstraintRange = Constraintrange,
773-
Label = k
774-
))
780+
781+
let line =
782+
Line
783+
|> Option.defaultValue (Plotly.NET.Line.init ())
784+
|> Plotly.NET.Line.style (
785+
?Color = LineColor,
786+
?Shape = LineShape,
787+
?Colorscale = LineColorScale,
788+
?ShowScale = ShowLineColorScale,
789+
?ReverseScale = ReverseLineColorScale
790+
)
775791

776792
TraceDomain.initParallelCategories (
777793
TraceDomainStyle.ParallelCategories(
778-
Dimensions = dims',
779-
?Domain = Domain,
780-
?Labelfont = Labelfont,
781-
?Tickfont = Tickfont,
782-
?Rangefont = Rangefont
794+
Dimensions = dimensions,
795+
Line = line,
796+
?Name = Name ,
797+
?ShowLegend = ShowLegend ,
798+
?Counts = Counts ,
799+
?Arrangement = Arrangement ,
800+
?BundleColors = BundleColors ,
801+
?SortPaths = SortPaths ,
802+
?LabelFont = LabelFont ,
803+
?TickFont = TickFont
783804
)
784805
)
785-
|> TraceStyle.Line(?Width = Width, ?Color = Color, ?Dash = Dash, ?Colorscale = Colorscale)
786806
|> GenericChart.ofTraceObject useDefaults
787-
788-
///
807+
808+
/// Computes the parallel categories plot
789809
[<Extension>]
790810
static member ParallelCategories
791811
(
792-
dims: seq<Dimension>,
793-
[<Optional; DefaultParameterValue(null)>] ?Color,
794-
[<Optional; DefaultParameterValue(null)>] ?Colorscale,
795-
[<Optional; DefaultParameterValue(null)>] ?Width,
796-
[<Optional; DefaultParameterValue(null)>] ?Dash,
797-
[<Optional; DefaultParameterValue(null)>] ?Domain,
798-
[<Optional; DefaultParameterValue(null)>] ?Labelfont,
799-
[<Optional; DefaultParameterValue(null)>] ?Tickfont,
800-
[<Optional; DefaultParameterValue(null)>] ?Rangefont,
801-
[<Optional; DefaultParameterValue(true)>] ?UseDefaults: bool
812+
keyValues: seq<string*seq<#IConvertible>>,
813+
[<Optional; DefaultParameterValue(null)>] ?Name : string,
814+
[<Optional; DefaultParameterValue(null)>] ?ShowLegend : bool,
815+
[<Optional; DefaultParameterValue(null)>] ?Counts : int,
816+
[<Optional; DefaultParameterValue(null)>] ?LineColor : Color,
817+
[<Optional; DefaultParameterValue(null)>] ?LineShape : StyleParam.Shape,
818+
[<Optional; DefaultParameterValue(null)>] ?LineColorScale : StyleParam.Colorscale,
819+
[<Optional; DefaultParameterValue(null)>] ?ShowLineColorScale : bool,
820+
[<Optional; DefaultParameterValue(null)>] ?ReverseLineColorScale : bool,
821+
[<Optional; DefaultParameterValue(null)>] ?Line : Line,
822+
[<Optional; DefaultParameterValue(null)>] ?Arrangement : StyleParam.CategoryArrangement,
823+
[<Optional; DefaultParameterValue(null)>] ?BundleColors : bool,
824+
[<Optional; DefaultParameterValue(null)>] ?SortPaths : StyleParam.SortAlgorithm,
825+
[<Optional; DefaultParameterValue(null)>] ?LabelFont : Font,
826+
[<Optional; DefaultParameterValue(null)>] ?TickFont : Font,
827+
[<Optional; DefaultParameterValue(null)>] ?UseDefaults : bool
802828
) =
803829

804830
let useDefaults = defaultArg UseDefaults true
831+
832+
let dims =
833+
keyValues |> Seq.map (fun (key, vals) -> Dimension.initParallel (Label = key, Values = vals))
834+
835+
let line =
836+
Line
837+
|> Option.defaultValue (Plotly.NET.Line.init ())
838+
|> Plotly.NET.Line.style (
839+
?Color = LineColor,
840+
?Shape = LineShape,
841+
?Colorscale = LineColorScale,
842+
?ShowScale = ShowLineColorScale,
843+
?ReverseScale = ReverseLineColorScale
844+
)
805845

806846
TraceDomain.initParallelCategories (
807847
TraceDomainStyle.ParallelCategories(
808848
Dimensions = dims,
809-
?Domain = Domain,
810-
?Color = Color,
811-
?Labelfont = Labelfont,
812-
?Tickfont = Tickfont,
813-
?Rangefont = Rangefont
849+
Line = line,
850+
?Name = Name ,
851+
?ShowLegend = ShowLegend ,
852+
?Counts = Counts ,
853+
?Arrangement = Arrangement ,
854+
?BundleColors = BundleColors ,
855+
?SortPaths = SortPaths ,
856+
?LabelFont = LabelFont ,
857+
?TickFont = TickFont
814858
)
815859
)
816-
|> TraceStyle.Line(?Width = Width, ?Dash = Dash, ?Colorscale = Colorscale)
817860
|> GenericChart.ofTraceObject useDefaults
818861

819-
820862
/// creates table out of header sequence and row sequences
821863
[<Extension>]
822864
static member Table

src/Plotly.NET/CommonAbstractions/Line.fs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ type Line() =
2727
[<Optional; DefaultParameterValue(null)>] ?ColorAxis : StyleParam.SubPlotId,
2828
[<Optional; DefaultParameterValue(null)>] ?Colorscale : StyleParam.Colorscale,
2929
[<Optional; DefaultParameterValue(null)>] ?ReverseScale : bool,
30+
[<Optional; DefaultParameterValue(null)>] ?ShowScale: bool,
3031
[<Optional; DefaultParameterValue(null)>] ?ColorBar : #DynamicObj
3132
) =
3233
Line()
@@ -47,6 +48,7 @@ type Line() =
4748
?ColorAxis = ColorAxis ,
4849
?Colorscale = Colorscale ,
4950
?ReverseScale = ReverseScale ,
51+
?ShowScale = ShowScale ,
5052
?ColorBar = ColorBar
5153

5254
)
@@ -71,6 +73,7 @@ type Line() =
7173
[<Optional; DefaultParameterValue(null)>] ?ColorAxis: StyleParam.SubPlotId,
7274
[<Optional; DefaultParameterValue(null)>] ?Colorscale: StyleParam.Colorscale,
7375
[<Optional; DefaultParameterValue(null)>] ?ReverseScale: bool,
76+
[<Optional; DefaultParameterValue(null)>] ?ShowScale: bool,
7477
[<Optional; DefaultParameterValue(null)>] ?ColorBar: #DynamicObj
7578
) =
7679
(fun (line: Line) ->
@@ -90,6 +93,7 @@ type Line() =
9093
ColorAxis |> DynObj.setValueOptBy line "coloraxis" StyleParam.SubPlotId.convert
9194
Colorscale |> DynObj.setValueOptBy line "colorscale" StyleParam.Colorscale.convert
9295
ReverseScale |> DynObj.setValueOpt line "reversescale"
96+
ShowScale |> DynObj.setValueOpt line "showscale"
9397
ColorBar |> DynObj.setValueOpt line "colorbar"
9498

9599
// out ->

0 commit comments

Comments
 (0)