Skip to content

Commit 2b710a0

Browse files
committed
Add Chart.LineCarpet
1 parent 119d70f commit 2b710a0

File tree

2 files changed

+144
-12
lines changed

2 files changed

+144
-12
lines changed

src/Plotly.NET/ChartAPI/ChartCarpet.fs

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,113 @@ module ChartCarpet =
249249

250250
let a,b = Seq.unzip ab
251251

252+
Chart.PointCarpet(
253+
a, b, carpetAnchorId,
254+
?Name = Name ,
255+
?ShowLegend = ShowLegend ,
256+
?MarkerSymbol = MarkerSymbol ,
257+
?MultiMarkerSymbol = MultiMarkerSymbol ,
258+
?Color = Color ,
259+
?Opacity = Opacity ,
260+
?MultiOpacity = MultiOpacity ,
261+
?Text = Text ,
262+
?MultiText = MultiText ,
263+
?TextPosition = TextPosition ,
264+
?MultiTextPosition = MultiTextPosition ,
265+
?TextFont = TextFont ,
266+
?Size = Size ,
267+
?MultiSize = MultiSize ,
268+
?Marker = Marker
269+
)
270+
271+
[<Extension>]
272+
static member LineCarpet
273+
(
274+
a : seq<#IConvertible>,
275+
b : seq<#IConvertible>,
276+
carpetAnchorId : string,
277+
[<Optional;DefaultParameterValue(null)>] ?Name : string,
278+
[<Optional;DefaultParameterValue(null)>] ?ShowMarkers : bool,
279+
[<Optional;DefaultParameterValue(null)>] ?Dash : StyleParam.DrawingStyle,
280+
[<Optional;DefaultParameterValue(null)>] ?Width : float ,
281+
[<Optional;DefaultParameterValue(null)>] ?Line : Line,
282+
[<Optional;DefaultParameterValue(null)>] ?ShowLegend : bool,
283+
[<Optional;DefaultParameterValue(null)>] ?MarkerSymbol : StyleParam.MarkerSymbol,
284+
[<Optional;DefaultParameterValue(null)>] ?MultiMarkerSymbol : seq<StyleParam.MarkerSymbol>,
285+
[<Optional;DefaultParameterValue(null)>] ?Color : Color,
286+
[<Optional;DefaultParameterValue(null)>] ?Opacity : float,
287+
[<Optional;DefaultParameterValue(null)>] ?MultiOpacity : seq<float>,
288+
[<Optional;DefaultParameterValue(null)>] ?Text : #IConvertible,
289+
[<Optional;DefaultParameterValue(null)>] ?MultiText : seq<#IConvertible>,
290+
[<Optional;DefaultParameterValue(null)>] ?TextPosition : StyleParam.TextPosition,
291+
[<Optional;DefaultParameterValue(null)>] ?MultiTextPosition : seq<StyleParam.TextPosition>,
292+
[<Optional;DefaultParameterValue(null)>] ?TextFont : Font,
293+
[<Optional;DefaultParameterValue(null)>] ?Size : int,
294+
[<Optional;DefaultParameterValue(null)>] ?MultiSize : seq<int>,
295+
[<Optional;DefaultParameterValue(null)>] ?Marker : Marker
296+
) =
297+
298+
let changeMode =
299+
let isShowMarker =
300+
match ShowMarkers with
301+
| Some isShow -> isShow
302+
| Option.None -> false
303+
StyleParam.ModeUtils.showText (TextPosition.IsSome || TextFont.IsSome)
304+
>> StyleParam.ModeUtils.showMarker (isShowMarker)
305+
306+
TraceCarpet.initScatterCarpet(
307+
TraceCarpetStyle.ScatterCarpet(
308+
A = a,
309+
B = b,
310+
Mode = changeMode StyleParam.Mode.Lines,
311+
Carpet = (carpetAnchorId |> StyleParam.SubPlotId.Carpet),
312+
?Name = Name ,
313+
?ShowLegend = ShowLegend ,
314+
?Opacity = Opacity ,
315+
?Text = Text ,
316+
?MultiText = MultiText ,
317+
?TextPosition = TextPosition ,
318+
?MultiTextPosition = MultiTextPosition,
319+
?TextFont = TextFont ,
320+
?Marker = Marker
321+
)
322+
>> TraceStyle.Marker(
323+
?Symbol = MarkerSymbol ,
324+
?MultiSymbol = MultiMarkerSymbol,
325+
?Color = Color ,
326+
?Opacity = Opacity ,
327+
?MultiOpacity = MultiOpacity ,
328+
?Size = Size ,
329+
?MultiSize = MultiSize
330+
)
331+
)
332+
|> GenericChart.ofTraceObject
333+
334+
[<Extension>]
335+
static member LineCarpet
336+
(
337+
ab : seq<#IConvertible*#IConvertible>,
338+
carpetAnchorId : string,
339+
[<Optional;DefaultParameterValue(null)>] ?Name : string,
340+
[<Optional;DefaultParameterValue(null)>] ?ShowMarkers : bool,
341+
[<Optional;DefaultParameterValue(null)>] ?ShowLegend : bool,
342+
[<Optional;DefaultParameterValue(null)>] ?MarkerSymbol : StyleParam.MarkerSymbol,
343+
[<Optional;DefaultParameterValue(null)>] ?MultiMarkerSymbol : seq<StyleParam.MarkerSymbol>,
344+
[<Optional;DefaultParameterValue(null)>] ?Color : Color,
345+
[<Optional;DefaultParameterValue(null)>] ?Opacity : float,
346+
[<Optional;DefaultParameterValue(null)>] ?MultiOpacity : seq<float>,
347+
[<Optional;DefaultParameterValue(null)>] ?Text : #IConvertible,
348+
[<Optional;DefaultParameterValue(null)>] ?MultiText : seq<#IConvertible>,
349+
[<Optional;DefaultParameterValue(null)>] ?TextPosition : StyleParam.TextPosition,
350+
[<Optional;DefaultParameterValue(null)>] ?MultiTextPosition : seq<StyleParam.TextPosition>,
351+
[<Optional;DefaultParameterValue(null)>] ?TextFont : Font,
352+
[<Optional;DefaultParameterValue(null)>] ?Size : int,
353+
[<Optional;DefaultParameterValue(null)>] ?MultiSize : seq<int>,
354+
[<Optional;DefaultParameterValue(null)>] ?Marker : Marker
355+
) =
356+
357+
let a,b = Seq.unzip ab
358+
252359
Chart.PointCarpet(
253360
a, b, carpetAnchorId,
254361
?Name = Name ,

src/Plotly.NET/Playground.fsx

Lines changed: 37 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -161,20 +161,43 @@ open System.IO
161161

162162
let a = [4.; 5.; 5.; 6.]
163163
let b = [1.; 1.; 2.; 3.]
164+
let carpets =
165+
[
166+
Chart.Carpet(
167+
"carpet1",
168+
A= [4.; 4.; 4.; 4.5; 4.5; 4.5; 5.; 5.; 5.; 6.; 6.; 6.],
169+
B= [1.; 2.; 3.; 1.; 2.; 3.; 1.; 2.; 3.; 1.; 2.; 3.],
170+
Y= [2.; 3.5; 4.; 3.; 4.5; 5.; 5.5; 6.5; 7.5; 8.; 8.5; 10.]
171+
)
172+
Chart.Carpet(
173+
"carpet2",
174+
A= ([4.; 4.; 4.; 4.5; 4.5; 4.5; 5.; 5.; 5.; 6.; 6.; 6.] |> List.rev),
175+
B= ([1.; 2.; 3.; 1.; 2.; 3.; 1.; 2.; 3.; 1.; 2.; 3.]|> List.rev),
176+
Y= ([2.; 3.5; 4.; 3.; 4.5; 5.; 5.5; 6.5; 7.5; 8.; 8.5; 10.] |> List.map (fun x -> x + 10.))
177+
)
178+
Chart.Carpet(
179+
"carpet3",
180+
A= [4.; 4.; 4.; 4.5; 4.5; 4.5; 5.; 5.; 5.; 6.; 6.; 6.],
181+
B= [1.; 2.; 3.; 1.; 2.; 3.; 1.; 2.; 3.; 1.; 2.; 3.],
182+
Y= ([2.; 3.5; 4.; 3.; 4.5; 5.; 5.5; 6.5; 7.5; 8.; 8.5; 10.] |> List.map (fun x -> x + 20.))
183+
)
184+
Chart.Carpet(
185+
"carpet4",
186+
A= ([4.; 4.; 4.; 4.5; 4.5; 4.5; 5.; 5.; 5.; 6.; 6.; 6.] |> List.rev),
187+
B= ([1.; 2.; 3.; 1.; 2.; 3.; 1.; 2.; 3.; 1.; 2.; 3.]|> List.rev),
188+
Y= ([2.; 3.5; 4.; 3.; 4.5; 5.; 5.5; 6.5; 7.5; 8.; 8.5; 10.] |> List.map (fun x -> x + 30.))
189+
)
190+
Chart.Carpet(
191+
"carpet5",
192+
A= ([4.; 4.; 4.; 4.5; 4.5; 4.5; 5.; 5.; 5.; 6.; 6.; 6.] |> List.rev),
193+
B= ([1.; 2.; 3.; 1.; 2.; 3.; 1.; 2.; 3.; 1.; 2.; 3.]|> List.rev),
194+
Y= ([2.; 3.5; 4.; 3.; 4.5; 5.; 5.5; 6.5; 7.5; 8.; 8.5; 10.] |> List.map (fun x -> x + 40.))
195+
)
196+
]
197+
|> Chart.combine
164198

165199
[
166-
Chart.Carpet(
167-
"carpet1",
168-
A= [4.; 4.; 4.; 4.5; 4.5; 4.5; 5.; 5.; 5.; 6.; 6.; 6.],
169-
B= [1.; 2.; 3.; 1.; 2.; 3.; 1.; 2.; 3.; 1.; 2.; 3.],
170-
Y= [2.; 3.5; 4.; 3.; 4.5; 5.; 5.5; 6.5; 7.5; 8.; 8.5; 10.]
171-
)
172-
Chart.Carpet(
173-
"carpet2",
174-
A= ([4.; 4.; 4.; 4.5; 4.5; 4.5; 5.; 5.; 5.; 6.; 6.; 6.] |> List.rev),
175-
B= ([1.; 2.; 3.; 1.; 2.; 3.; 1.; 2.; 3.; 1.; 2.; 3.]|> List.rev),
176-
Y= ([2.; 3.5; 4.; 3.; 4.5; 5.; 5.5; 6.5; 7.5; 8.; 8.5; 10.] |> List.map (fun x -> x + 10.))
177-
)
200+
carpets
178201
Chart.ScatterCarpet(
179202
a,b,
180203
StyleParam.Mode.Lines_Markers,
@@ -192,8 +215,10 @@ let b = [1.; 1.; 2.; 3.]
192215
Color = Color.fromColors ([Red; Blue; Green; Yellow] |> List.map Color.fromKeyword)
193216
)
194217
Chart.PointCarpet(a,b,"carpet2",Name = "Point")
218+
Chart.LineCarpet(a,b,"carpet3",Name = "Line")
195219
]
196220
|> Chart.combine
221+
|> Chart.withSize(Height=1000)
197222
|> Chart.show
198223

199224
let crazyMarker =

0 commit comments

Comments
 (0)