Skip to content

Commit e11bdb5

Browse files
Sankey charts tests
1 parent cc060f3 commit e11bdb5

File tree

3 files changed

+118
-15
lines changed

3 files changed

+118
-15
lines changed

src/Plotly.NET/Playground.fsx

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -802,18 +802,3 @@ let values,labels =
802802
|> Seq.unzip
803803

804804
let cols =[|"black";"blue"|]
805-
806-
let r = [77.5; 72.5; 70.0; 45.0; 22.5; 42.5; 40.0; 62.5]
807-
let r' = [57.5; 50.0; 45.0; 35.0; 20.0; 22.5; 37.5; 55.0]
808-
let r'' = [40.0; 30.0; 30.0; 35.0; 7.5; 7.5; 32.5; 40.0]
809-
let r''' = [20.0; 7.5; 15.0; 22.5; 2.5; 2.5; 12.5; 22.5]
810-
811-
let t = ["North"; "N-E"; "East"; "S-E"; "South"; "S-W"; "West"; "N-W"]
812-
[
813-
Chart.WindRose (r ,t,Name="11-14 m/s")
814-
Chart.WindRose (r' ,t,Name="8-11 m/s")
815-
Chart.WindRose (r'' ,t,Name="5-8 m/s")
816-
Chart.WindRose (r''',t,Name="< 5 m/s")
817-
]
818-
|> Chart.Combine
819-
|> Chart.Show
Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
module Tests.CategoricalCharts
2+
3+
open Expecto
4+
open Plotly.NET
5+
open TestUtils
6+
open Plotly.NET.GenericChart
7+
open System
8+
9+
let parallelCategoriesChart =
10+
let dims =
11+
[
12+
Dimensions.init(["Cat1";"Cat1";"Cat1";"Cat1";"Cat2";"Cat2";"Cat3"],Label="A")
13+
Dimensions.init([0;1;0;1;0;0;0],Label="B",TickText=["YES";"NO"])
14+
]
15+
16+
Chart.ParallelCategories(
17+
dims,
18+
Color=[0.;1.;0.;1.;0.;0.;0.],
19+
Colorscale = StyleParam.Colorscale.Blackbody
20+
)
21+
22+
[<Tests>]
23+
let ``Parallel categories charts`` =
24+
testList "CategoricalCharts.Parallel categories charts" [
25+
testCase "Parallel categories data" ( fun () ->
26+
"var data = [{\"type\":\"parcats\",\"dimensions\":[{\"values\":[\"Cat1\",\"Cat1\",\"Cat1\",\"Cat1\",\"Cat2\",\"Cat2\",\"Cat3\"],\"label\":\"A\"},{\"values\":[0,1,0,1,0,0,0],\"label\":\"B\",\"ticktext\":[\"YES\",\"NO\"]}],\"color\":[0.0,1.0,0.0,1.0,0.0,0.0,0.0],\"line\":{\"colorscale\":\"Blackbody\"}}];"
27+
|> chartGeneratedContains parallelCategoriesChart
28+
);
29+
testCase "Parallel categories layout" ( fun () ->
30+
emptyLayout parallelCategoriesChart
31+
);
32+
]
33+
34+
35+
let parcoords1Chart =
36+
let data =
37+
[
38+
"A",[1.;4.;3.4;0.7;]
39+
"B",[3.;1.5;1.7;2.3;]
40+
"C",[2.;4.;3.1;5.]
41+
"D",[4.;2.;2.;4.;]
42+
]
43+
Chart.ParallelCoord(data,Color="blue")
44+
45+
let parcoordsChart =
46+
let v = [|
47+
Dimensions.init([|1.;4.;|],
48+
StyleParam.Range.MinMax (1.,5.),StyleParam.Range.MinMax (1.,2.),Label="A");
49+
Dimensions.init([|3.;1.5;|],
50+
StyleParam.Range.MinMax (1.,5.),Label="B",Tickvals=[|1.5;3.;4.;5.;|]);
51+
Dimensions.init([|2.;4.;|],
52+
StyleParam.Range.MinMax (1.,5.),Label="C",Tickvals=[|1.;2.;4.;5.;|],
53+
TickText=[|"txt 1";"txt 2";"txt 4";"txt 5";|]);
54+
Dimensions.init([|4.;2.;|],
55+
StyleParam.Range.MinMax (1.,5.),Label="D");
56+
|]
57+
58+
let dyn = Trace("parcoords")
59+
60+
dyn?dimensions <- v
61+
dyn?line <- Line.init(Color = "blue")
62+
63+
dyn
64+
|> GenericChart.ofTraceObject
65+
66+
[<Tests>]
67+
let ``Parallel coordinates charts`` =
68+
testList "CategoricalCharts.Parallel coordinates charts" [
69+
testCase "Parallel coordinates 1 data" ( fun () ->
70+
"var data = [{\"type\":\"parcoords\",\"dimensions\":[{\"values\":[1.0,4.0,3.4,0.7],\"label\":\"A\"},{\"values\":[3.0,1.5,1.7,2.3],\"label\":\"B\"},{\"values\":[2.0,4.0,3.1,5.0],\"label\":\"C\"},{\"values\":[4.0,2.0,2.0,4.0],\"label\":\"D\"}],\"line\":{\"color\":\"blue\"}}];"
71+
|> chartGeneratedContains parcoords1Chart
72+
);
73+
testCase "Parallel coordinates 1 layout" ( fun () ->
74+
emptyLayout parcoords1Chart
75+
);
76+
testCase "Parallel coordinates data" ( fun () ->
77+
"var data = [{\"type\":\"parcoords\",\"dimensions\":[{\"values\":[1.0,4.0],\"range\":[1.0,5.0],\"constraintrange\":[1.0,2.0],\"label\":\"A\"},{\"values\":[3.0,1.5],\"range\":[1.0,5.0],\"label\":\"B\",\"tickvals\":[1.5,3.0,4.0,5.0]},{\"values\":[2.0,4.0],\"range\":[1.0,5.0],\"label\":\"C\",\"tickvals\":[1.0,2.0,4.0,5.0],\"ticktext\":[\"txt 1\",\"txt 2\",\"txt 4\",\"txt 5\"]},{\"values\":[4.0,2.0],\"range\":[1.0,5.0],\"label\":\"D\"}],\"line\":{\"color\":\"blue\"}}];"
78+
|> chartGeneratedContains parcoordsChart
79+
);
80+
testCase "Parallel coordinates layout" ( fun () ->
81+
emptyLayout parcoordsChart
82+
);
83+
]
84+
85+
86+
let sankey1 =
87+
// create nodes
88+
let n1 = Node.Create("a",color="Black")
89+
let n2 = Node.Create("b",color="Red")
90+
let n3 = Node.Create("c",color="Purple")
91+
let n4 = Node.Create("d",color="Green")
92+
let n5 = Node.Create("e",color="Orange")
93+
94+
// create links between nodes
95+
let link1 = Link.Create(n1,n2,value=1.0)
96+
let link2 = Link.Create(n2,n3,value=2.0)
97+
let link3 = Link.Create(n1,n5,value=1.3)
98+
let link4 = Link.Create(n4,n5,value=1.5)
99+
let link5 = Link.Create(n3,n5,value=0.5)
100+
Chart.Sankey(
101+
[n1;n2;n3;n4;n5],
102+
[link1;link2;link3;link4;link5]
103+
)
104+
|> Chart.withTitle "Sankey Sample"
105+
106+
[<Tests>]
107+
let ``Sankey charts`` =
108+
testList "CategoricalCharts.Sankey charts" [
109+
testCase "Sankey data" ( fun () ->
110+
"var data = [{\"type\":\"sankey\",\"node\":{\"label\":[\"a\",\"b\",\"c\",\"d\",\"e\"],\"color\":[\"Black\",\"Red\",\"Purple\",\"Green\",\"Orange\"]},\"link\":{\"source\":[0,1,0,3,2],\"target\":[1,2,4,4,4],\"value\":[1.0,2.0,1.3,1.5,0.5]}}];"
111+
|> chartGeneratedContains sankey1
112+
);
113+
testCase "Sankey layout" ( fun () ->
114+
"var layout = {\"title\":\"Sankey Sample\"};"
115+
|> chartGeneratedContains sankey1
116+
);
117+
]

tests/Plotly.NET.Tests/Plotly.NET.Tests.fsproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
<Compile Include="HtmlCodegen\MapboxMapCharts.fs" />
1818
<Compile Include="HtmlCodegen\FinanceCharts.fs" />
1919
<Compile Include="HtmlCodegen\PolarCharts.fs" />
20+
<Compile Include="HtmlCodegen\CategoricalCharts.fs" />
2021
<Compile Include="ImageExport.fs" />
2122
<Compile Include="Main.fs" />
2223
</ItemGroup>

0 commit comments

Comments
 (0)