Skip to content

Commit 6c24bed

Browse files
committed
finish heatmap chart
1 parent 81de312 commit 6c24bed

File tree

4 files changed

+309
-79
lines changed

4 files changed

+309
-79
lines changed

src/Plotly.NET/ChartAPI/Chart2D.fs

Lines changed: 178 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -2178,41 +2178,195 @@ module Chart2D =
21782178
/// Shows a graphical representation of a 3-dimensional surface by plotting constant z slices, called contours, on a 2-dimensional format.
21792179
/// That is, given a value for z, lines are drawn for connecting the (x,y) coordinates where that z value occurs.
21802180
[<Extension>]
2181-
static member Heatmap(data:seq<#seq<#IConvertible>>,
2182-
[<Optional;DefaultParameterValue(null)>] ?ColNames,
2183-
[<Optional;DefaultParameterValue(null)>] ?RowNames,
2184-
[<Optional;DefaultParameterValue(null)>] ?Name,
2185-
[<Optional;DefaultParameterValue(null)>] ?ShowLegend,
2186-
[<Optional;DefaultParameterValue(null)>] ?Opacity,
2187-
[<Optional;DefaultParameterValue(null)>] ?Colorscale,
2188-
[<Optional;DefaultParameterValue(null)>] ?Showscale,
2189-
[<Optional;DefaultParameterValue(null)>] ?Xgap,
2190-
[<Optional;DefaultParameterValue(null)>] ?Ygap,
2191-
[<Optional;DefaultParameterValue(null)>] ?zSmooth,
2192-
[<Optional;DefaultParameterValue(null)>] ?ColorBar,
2193-
[<Optional;DefaultParameterValue(false)>]?UseWebGL : bool,
2194-
[<Optional;DefaultParameterValue(true)>] ?UseDefaults : bool
2181+
static member Heatmap
2182+
(
2183+
zData: seq<#seq<#IConvertible>>,
2184+
[<Optional;DefaultParameterValue(null)>] ?Name : string,
2185+
[<Optional;DefaultParameterValue(null)>] ?ShowLegend : bool,
2186+
[<Optional;DefaultParameterValue(null)>] ?Opacity : float,
2187+
[<Optional;DefaultParameterValue(null)>] ?X : seq<#IConvertible>,
2188+
[<Optional;DefaultParameterValue(null)>] ?XGap : int,
2189+
[<Optional;DefaultParameterValue(null)>] ?Y : seq<#IConvertible>,
2190+
[<Optional;DefaultParameterValue(null)>] ?YGap : int,
2191+
[<Optional;DefaultParameterValue(null)>] ?Text : #IConvertible,
2192+
[<Optional;DefaultParameterValue(null)>] ?MultiText : seq<#IConvertible>,
2193+
[<Optional;DefaultParameterValue(null)>] ?ColorBar : ColorBar,
2194+
[<Optional;DefaultParameterValue(null)>] ?ColorScale : StyleParam.Colorscale,
2195+
[<Optional;DefaultParameterValue(null)>] ?ShowScale : bool,
2196+
[<Optional;DefaultParameterValue(null)>] ?ReverseScale : bool,
2197+
[<Optional;DefaultParameterValue(null)>] ?ZSmooth : StyleParam.SmoothAlg,
2198+
[<Optional;DefaultParameterValue(null)>] ?Transpose : bool,
2199+
[<Optional;DefaultParameterValue(false)>]?UseWebGL : bool,
2200+
[<Optional;DefaultParameterValue(false)>]?ReverseYAxis : bool,
2201+
[<Optional;DefaultParameterValue(true)>] ?UseDefaults : bool
21952202
) =
21962203

21972204
let useDefaults = defaultArg UseDefaults true
2205+
let reverseYAxis= defaultArg ReverseYAxis false
21982206

21992207
let style =
22002208
Trace2DStyle.Heatmap(
2201-
Z=data,
2202-
?X=ColNames,
2203-
?Y=RowNames,
2204-
?Xgap=Xgap,
2205-
?Ygap=Ygap,
2206-
?Colorscale=Colorscale,
2207-
?Showscale=Showscale,
2208-
?zSmooth=zSmooth,
2209-
?ColorBar=ColorBar
2209+
Z = zData ,
2210+
?Name = Name ,
2211+
?ShowLegend = ShowLegend ,
2212+
?Opacity = Opacity ,
2213+
?X = X ,
2214+
?XGap = XGap ,
2215+
?Y = Y ,
2216+
?YGap = YGap ,
2217+
?Text = Text ,
2218+
?MultiText = MultiText ,
2219+
?ColorBar = ColorBar ,
2220+
?ColorScale = ColorScale ,
2221+
?ShowScale = ShowScale ,
2222+
?ReverseScale = ReverseScale,
2223+
?ZSmooth = ZSmooth ,
2224+
?Transpose = Transpose
22102225
)
2211-
>> TraceStyle.TraceInfo(?Name=Name,?ShowLegend=ShowLegend,?Opacity=Opacity)
22122226

22132227
let useWebGL = defaultArg UseWebGL false
22142228

22152229
Chart.renderHeatmapTrace useDefaults useWebGL style
2230+
|> fun c ->
2231+
if reverseYAxis then
2232+
c
2233+
|> Chart.withYAxis(LinearAxis.init(AutoRange=StyleParam.AutoRange.Reversed))
2234+
else
2235+
c
2236+
2237+
/// Shows a graphical representation of a 3-dimensional surface by plotting constant z slices, called contours, on a 2-dimensional format.
2238+
/// That is, given a value for z, lines are drawn for connecting the (x,y) coordinates where that z value occurs.
2239+
[<Extension>]
2240+
static member Heatmap
2241+
(
2242+
zData: seq<#seq<#IConvertible>>,
2243+
colNames: seq<string>,
2244+
rowNames: seq<string>,
2245+
[<Optional;DefaultParameterValue(null)>] ?Name : string,
2246+
[<Optional;DefaultParameterValue(null)>] ?ShowLegend : bool,
2247+
[<Optional;DefaultParameterValue(null)>] ?Opacity : float,
2248+
[<Optional;DefaultParameterValue(null)>] ?XGap : int,
2249+
[<Optional;DefaultParameterValue(null)>] ?YGap : int,
2250+
[<Optional;DefaultParameterValue(null)>] ?Text : #IConvertible,
2251+
[<Optional;DefaultParameterValue(null)>] ?MultiText : seq<#IConvertible>,
2252+
[<Optional;DefaultParameterValue(null)>] ?ColorBar : ColorBar,
2253+
[<Optional;DefaultParameterValue(null)>] ?ColorScale : StyleParam.Colorscale,
2254+
[<Optional;DefaultParameterValue(null)>] ?ShowScale : bool,
2255+
[<Optional;DefaultParameterValue(null)>] ?ReverseScale : bool,
2256+
[<Optional;DefaultParameterValue(null)>] ?ZSmooth : StyleParam.SmoothAlg,
2257+
[<Optional;DefaultParameterValue(null)>] ?Transpose : bool,
2258+
[<Optional;DefaultParameterValue(false)>]?UseWebGL : bool,
2259+
[<Optional;DefaultParameterValue(false)>]?ReverseYAxis : bool,
2260+
[<Optional;DefaultParameterValue(true)>] ?UseDefaults : bool
2261+
) =
2262+
2263+
let useDefaults = defaultArg UseDefaults true
2264+
let reverseYAxis= defaultArg ReverseYAxis false
2265+
2266+
let style =
2267+
Trace2DStyle.Heatmap(
2268+
Z = zData ,
2269+
?Name = Name ,
2270+
?ShowLegend = ShowLegend ,
2271+
?Opacity = Opacity ,
2272+
X = (colNames |> Seq.map (fun x -> x :> IConvertible)),
2273+
?XGap = XGap ,
2274+
Y = (rowNames |> Seq.map (fun x -> x :> IConvertible)),
2275+
?YGap = YGap ,
2276+
?Text = Text ,
2277+
?MultiText = MultiText ,
2278+
?ColorBar = ColorBar ,
2279+
?ColorScale = ColorScale ,
2280+
?ShowScale = ShowScale ,
2281+
?ReverseScale = ReverseScale,
2282+
?ZSmooth = ZSmooth ,
2283+
?Transpose = Transpose
2284+
)
2285+
2286+
let useWebGL = defaultArg UseWebGL false
2287+
2288+
Chart.renderHeatmapTrace useDefaults useWebGL style
2289+
|> fun c ->
2290+
if reverseYAxis then
2291+
c
2292+
|> Chart.withYAxis(LinearAxis.init(AutoRange=StyleParam.AutoRange.Reversed))
2293+
else
2294+
c
2295+
2296+
/// Shows a graphical representation of a 3-dimensional surface by plotting constant z slices, called contours, on a 2-dimensional format.
2297+
/// That is, given a value for z, lines are drawn for connecting the (x,y) coordinates where that z value occurs.
2298+
[<Extension>]
2299+
static member AnnotatedHeatmap
2300+
(
2301+
zData: seq<#seq<#IConvertible>>,
2302+
annotationText: seq<#seq<string>>,
2303+
[<Optional;DefaultParameterValue(null)>] ?Name : string,
2304+
[<Optional;DefaultParameterValue(null)>] ?ShowLegend : bool,
2305+
[<Optional;DefaultParameterValue(null)>] ?Opacity : float,
2306+
[<Optional;DefaultParameterValue(null)>] ?X : seq<#IConvertible>,
2307+
[<Optional;DefaultParameterValue(null)>] ?XGap : int,
2308+
[<Optional;DefaultParameterValue(null)>] ?Y : seq<#IConvertible>,
2309+
[<Optional;DefaultParameterValue(null)>] ?YGap : int,
2310+
[<Optional;DefaultParameterValue(null)>] ?Text : #IConvertible,
2311+
[<Optional;DefaultParameterValue(null)>] ?MultiText : seq<#IConvertible>,
2312+
[<Optional;DefaultParameterValue(null)>] ?ColorBar : ColorBar,
2313+
[<Optional;DefaultParameterValue(null)>] ?ColorScale : StyleParam.Colorscale,
2314+
[<Optional;DefaultParameterValue(null)>] ?ShowScale : bool,
2315+
[<Optional;DefaultParameterValue(null)>] ?ReverseScale : bool,
2316+
[<Optional;DefaultParameterValue(null)>] ?ZSmooth : StyleParam.SmoothAlg,
2317+
[<Optional;DefaultParameterValue(null)>] ?Transpose : bool,
2318+
[<Optional;DefaultParameterValue(false)>]?UseWebGL : bool,
2319+
[<Optional;DefaultParameterValue(false)>]?ReverseYAxis : bool,
2320+
[<Optional;DefaultParameterValue(true)>] ?UseDefaults : bool
2321+
) =
2322+
2323+
let useDefaults = defaultArg UseDefaults true
2324+
let reverseYAxis= defaultArg ReverseYAxis false
2325+
2326+
let dims = Seq.length zData
2327+
let dims2 = Seq.length annotationText
2328+
2329+
if dims <> dims2 then failwith "incompatible dims"
2330+
2331+
let style =
2332+
Trace2DStyle.Heatmap(
2333+
Z = zData ,
2334+
?Name = Name ,
2335+
?ShowLegend = ShowLegend ,
2336+
?Opacity = Opacity ,
2337+
?X = X ,
2338+
?XGap = XGap ,
2339+
?Y = Y ,
2340+
?YGap = YGap ,
2341+
?Text = Text ,
2342+
?MultiText = MultiText ,
2343+
?ColorBar = ColorBar ,
2344+
?ColorScale = ColorScale ,
2345+
?ShowScale = ShowScale ,
2346+
?ReverseScale = ReverseScale,
2347+
?ZSmooth = ZSmooth ,
2348+
?Transpose = Transpose
2349+
)
2350+
2351+
let useWebGL = defaultArg UseWebGL false
2352+
2353+
Chart.renderHeatmapTrace useDefaults useWebGL style
2354+
|> fun c ->
2355+
if reverseYAxis then
2356+
c
2357+
|> Chart.withYAxis(LinearAxis.init(AutoRange=StyleParam.AutoRange.Reversed))
2358+
else
2359+
c
2360+
|> Chart.withAnnotations (
2361+
annotationText
2362+
|> Seq.mapi (fun y inner ->
2363+
inner
2364+
|> Seq.mapi (fun x text ->
2365+
Annotation.init(x,y,Text=(string text),ShowArrow=false)
2366+
)
2367+
)
2368+
|> Seq.concat
2369+
)
22162370

22172371

22182372
[<Extension>]

src/Plotly.NET/Playground.fsx

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,23 @@ open FSharpAux
171171
open System
172172
open System.IO
173173

174+
Chart.AnnotatedHeatmap(
175+
zData = [
176+
[1..5]
177+
[6..10]
178+
[11..15]
179+
],
180+
annotationText = [
181+
["1,1";"1,2";"1,3"]
182+
["2,1";"2,2";"2,3"]
183+
["3,1";"3,2";"3,3"]
184+
],
185+
X = ["C1";"C2";"C3"],
186+
Y = ["R1";"R2";"R3"],
187+
ReverseYAxis = true
188+
)
189+
|> Chart.show
190+
174191
Chart.Waterfall(
175192
x = ["Sales"; "Consulting"; "Net revenue"; "Purchases"; "Other expenses"; "Profit before tax"],
176193
y = [60; 80; 0; -40; -20; 0],

src/Plotly.NET/Templates/ChartTemplates.fs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -430,7 +430,7 @@ module ChartTemplates =
430430
ColorBar = ColorBar.init(
431431
OutlineWidth = 0., Ticks = StyleParam.TickOptions.Empty
432432
),
433-
Colorscale = StyleParam.Colorscale.Custom [
433+
ColorScale = StyleParam.Colorscale.Custom [
434434
0.0 , "#0d0887"
435435
0.1111111111111111 , "#46039f"
436436
0.2222222222222222 , "#7201a8"
@@ -448,7 +448,7 @@ module ChartTemplates =
448448
ColorBar = ColorBar.init(
449449
OutlineWidth = 0., Ticks = StyleParam.TickOptions.Empty
450450
),
451-
Colorscale = StyleParam.Colorscale.Custom [
451+
ColorScale = StyleParam.Colorscale.Custom [
452452
0.0 , "#0d0887"
453453
0.1111111111111111 , "#46039f"
454454
0.2222222222222222 , "#7201a8"

0 commit comments

Comments
 (0)