Skip to content

Commit 638caad

Browse files
authored
Merge pull request #66 from bvenn/FixPieChartColors
2 parents 1551c6d + 1d66eba commit 638caad

File tree

4 files changed

+123
-27
lines changed

4 files changed

+123
-27
lines changed

docs/2_5_pie-doughnut-charts.fsx

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,8 @@ let labels = ["Residential"; "Non-Residential"; "Utility"]
2727

2828
(**
2929
30-
A pie or a doughnut chart can be created using the `Chart.Pie` and `Chart.Doughnut` functions.
31-
When creating pie or doughnut charts, it is usually desirable to provide both labels and
32-
values.
30+
A pie, doughnut, or sunburst chart can be created using the `Chart.Pie`, `Chart.Doughnut`, and `Chart.Sunburst` functions.
31+
When creating pie charts, it is usually desirable to provide both labels and values.
3332
3433
*)
3534

@@ -60,4 +59,21 @@ doughnut1
6059

6160
(***hide***)
6261
doughnut1 |> GenericChart.toChartHTML
63-
(***include-it-raw***)
62+
(***include-it-raw***)
63+
64+
let sunburst1 =
65+
Chart.Sunburst(
66+
["A";"B";"C";"D";"E"],
67+
["";"";"B";"B";""],
68+
Values=[5.;0.;3.;2.;3.],
69+
Text=["At";"Bt";"Ct";"Dt";"Et"]
70+
)
71+
72+
(*** condition: ipynb ***)
73+
#if IPYNB
74+
sunburst1
75+
#endif // IPYNB
76+
77+
(***hide***)
78+
sunburst1 |> GenericChart.toChartHTML
79+
(***include-it-raw***)

src/Plotly.NET/Chart.fs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1269,15 +1269,15 @@ type Chart =
12691269
[<Optional;DefaultParameterValue(null)>] ?Labels,
12701270
[<Optional;DefaultParameterValue(null)>] ?Name,
12711271
[<Optional;DefaultParameterValue(null)>] ?Showlegend,
1272-
[<Optional;DefaultParameterValue(null)>] ?Color,
1272+
[<Optional;DefaultParameterValue(null)>] ?Colors,
12731273
[<Optional;DefaultParameterValue(null)>] ?TextPosition,
12741274
[<Optional;DefaultParameterValue(null)>] ?TextFont,
12751275
[<Optional;DefaultParameterValue(null)>] ?Hoverinfo,
12761276
[<Optional;DefaultParameterValue(null)>] ?Textinfo,
12771277
[<Optional;DefaultParameterValue(null)>] ?Opacity) =
12781278
Trace.initPie (TraceStyle.Pie(Values=values,?Labels=Labels,?Textinfo=Textinfo))
12791279
|> TraceStyle.TraceInfo(?Name=Name,?Showlegend=Showlegend,?Opacity=Opacity,?Hoverinfo=Hoverinfo)
1280-
|> TraceStyle.Marker(?Color=Color)
1280+
|> TraceStyle.Marker(?Colors=Colors)
12811281
|> TraceStyle.TextLabel(?Text=Labels,?Textposition=TextPosition,?Textfont=TextFont)
12821282
|> GenericChart.ofTraceObject
12831283

@@ -1286,22 +1286,22 @@ type Chart =
12861286
static member Pie(data:seq<#IConvertible*#IConvertible>,
12871287
[<Optional;DefaultParameterValue(null)>] ?Name,
12881288
[<Optional;DefaultParameterValue(null)>] ?Showlegend,
1289-
[<Optional;DefaultParameterValue(null)>] ?Color,
1289+
[<Optional;DefaultParameterValue(null)>] ?Colors,
12901290
[<Optional;DefaultParameterValue(null)>] ?TextPosition,
12911291
[<Optional;DefaultParameterValue(null)>] ?TextFont,
12921292
[<Optional;DefaultParameterValue(null)>] ?Hoverinfo,
12931293
[<Optional;DefaultParameterValue(null)>] ?Textinfo,
12941294
[<Optional;DefaultParameterValue(null)>] ?Opacity) =
12951295
let values,labels = Seq.unzip data
1296-
Chart.Pie(values,Labels=labels,?Name=Name,?Showlegend=Showlegend,?Color=Color,?TextPosition=TextPosition,?TextFont=TextFont,?Hoverinfo=Hoverinfo,?Textinfo=Textinfo,?Opacity=Opacity)
1296+
Chart.Pie(values,Labels=labels,?Name=Name,?Showlegend=Showlegend,?Colors=Colors,?TextPosition=TextPosition,?TextFont=TextFont,?Hoverinfo=Hoverinfo,?Textinfo=Textinfo,?Opacity=Opacity)
12971297

12981298

12991299
/// Shows how proportions of data, shown as pie-shaped pieces, contribute to the data as a whole.
13001300
static member Doughnut(values,
13011301
[<Optional;DefaultParameterValue(null)>] ?Labels,
13021302
[<Optional;DefaultParameterValue(null)>] ?Name,
13031303
[<Optional;DefaultParameterValue(null)>] ?Showlegend,
1304-
[<Optional;DefaultParameterValue(null)>] ?Color,
1304+
[<Optional;DefaultParameterValue(null)>] ?Colors,
13051305
[<Optional;DefaultParameterValue(null)>] ?Hole,
13061306
[<Optional;DefaultParameterValue(null)>] ?TextPosition,
13071307
[<Optional;DefaultParameterValue(null)>] ?TextFont,
@@ -1311,7 +1311,7 @@ type Chart =
13111311
let hole' = if Hole.IsSome then Hole.Value else 0.4
13121312
Trace.initPie (TraceStyle.Pie(Values=values,?Labels=Labels,?Textinfo=Textinfo,Hole=hole'))
13131313
|> TraceStyle.TraceInfo(?Name=Name,?Showlegend=Showlegend,?Opacity=Opacity,?Hoverinfo=Hoverinfo)
1314-
|> TraceStyle.Marker(?Color=Color)
1314+
|> TraceStyle.Marker(?Colors=Colors)
13151315
|> TraceStyle.TextLabel(?Text=Labels,?Textposition=TextPosition,?Textfont=TextFont)
13161316
|> GenericChart.ofTraceObject
13171317

@@ -1320,15 +1320,15 @@ type Chart =
13201320
static member Doughnut(data:seq<#IConvertible*#IConvertible>,
13211321
[<Optional;DefaultParameterValue(null)>] ?Name,
13221322
[<Optional;DefaultParameterValue(null)>] ?Showlegend,
1323-
[<Optional;DefaultParameterValue(null)>] ?Color,
1323+
[<Optional;DefaultParameterValue(null)>] ?Colors,
13241324
[<Optional;DefaultParameterValue(null)>] ?Hole,
13251325
[<Optional;DefaultParameterValue(null)>] ?TextPosition,
13261326
[<Optional;DefaultParameterValue(null)>] ?TextFont,
13271327
[<Optional;DefaultParameterValue(null)>] ?Hoverinfo,
13281328
[<Optional;DefaultParameterValue(null)>] ?Textinfo,
13291329
[<Optional;DefaultParameterValue(null)>] ?Opacity) =
13301330
let values,labels = Seq.unzip data
1331-
Chart.Doughnut(values,Labels=labels,?Name=Name,?Showlegend=Showlegend,?Color=Color,?Hole=Hole,?TextPosition=TextPosition,?TextFont=TextFont,?Hoverinfo=Hoverinfo,?Textinfo=Textinfo,?Opacity=Opacity)
1331+
Chart.Doughnut(values,Labels=labels,?Name=Name,?Showlegend=Showlegend,?Colors=Colors,?Hole=Hole,?TextPosition=TextPosition,?TextFont=TextFont,?Hoverinfo=Hoverinfo,?Textinfo=Textinfo,?Opacity=Opacity)
13321332

13331333

13341334
/// Uses points, line or both depending on the mode to represent data points in a polar chart

src/Plotly.NET/Playground.fsx

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
#load "Layout.fs"
3636
#load "Template.fs"
3737
#load "Config.fs"
38-
#r @"..\..\packages\Newtonsoft.Json\lib\netstandard2.0\Newtonsoft.Json.dll"
38+
#r "nuget: Newtonsoft.Json, 12.0.3"
3939
#load "GenericChart.fs"
4040
#load "Chart.fs"
4141
#load "ChartExtensions.fs"
@@ -493,3 +493,21 @@ generateDomainRanges 8 1
493493
TitleFont=Font.init(Size=20)
494494
)
495495
|> Chart.Show
496+
497+
let values,labels =
498+
[
499+
1,"v1"
500+
2,"v2"
501+
]
502+
|> Seq.unzip
503+
504+
let cols =[|"black";"blue"|]
505+
506+
let doughnut1 =
507+
Chart.Pie(
508+
values,
509+
labels,
510+
Colors=cols,
511+
Textinfo=labels
512+
)
513+
|> Chart.Show

src/Plotly.NET/Template.fs

Lines changed: 76 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -82,18 +82,41 @@ module ChartTemplates =
8282
|]
8383

8484
let light =
85-
86-
let defaultFont = Font.init (Size = 40)
85+
let initLightAxisTemplate() =
86+
Axis.LinearAxis.init(
87+
Showline = true,
88+
Zeroline = true
89+
)
8790

8891
let defaultLayout =
8992
Layout.init (
9093
Paper_bgcolor = "white",
91-
Plot_bgcolor= "white",
92-
Font = defaultFont
94+
Plot_bgcolor = "white"
95+
)
96+
|> Layout.AddLinearAxis((StyleParam.AxisId.X 1),(initLightAxisTemplate()))
97+
|> Layout.AddLinearAxis((StyleParam.AxisId.Y 1),(initLightAxisTemplate()))
98+
99+
Template.init(defaultLayout)
100+
101+
let lightMirrored =
102+
let initLightAxisTemplate() =
103+
Axis.LinearAxis.init(
104+
Showline = true,
105+
Zeroline = true,
106+
Mirror = StyleParam.Mirror.All,
107+
Ticks = StyleParam.TickOptions.Inside
108+
//Showgrid = false
93109
)
94110

111+
let defaultLayout =
112+
Layout.init (
113+
Paper_bgcolor = "white",
114+
Plot_bgcolor = "white"
115+
)
116+
|> Layout.AddLinearAxis((StyleParam.AxisId.X 1),(initLightAxisTemplate()))
117+
|> Layout.AddLinearAxis((StyleParam.AxisId.Y 1),(initLightAxisTemplate()))
95118

96-
Template.init(defaultLayout, TraceTemplates = [||])
119+
Template.init(defaultLayout)
97120

98121
let dark =
99122

@@ -103,8 +126,9 @@ module ChartTemplates =
103126
Zerolinecolor = "rgb(204, 204, 204)",
104127
Gridcolor = "rgba(204, 204, 204, 0.3)",
105128
Tickcolor = "rgba(204, 204, 204, 0.5)",
106-
Showline= true,
107-
Zeroline=true
129+
Ticks = StyleParam.TickOptions.Inside,
130+
Showline = true,
131+
Zeroline = true
108132
)
109133

110134
let darkLayoutTemplate =
@@ -136,22 +160,60 @@ module ChartTemplates =
136160

137161
let initFslabAxisTemplate() =
138162
Axis.LinearAxis.init(
139-
Linecolor = "#438AFE",
163+
Linecolor = "white",
140164
Zerolinecolor = "rgba(67, 138, 254, 0.5)",
141165
Gridcolor = "rgba(67, 138, 254, 0.5)",
142166
Tickcolor = "rgba(67, 138, 254, 0.5)",
143-
Showline= true,
144-
Zeroline=true
167+
Ticks = StyleParam.TickOptions.Inside,
168+
Showline = true,
169+
Zeroline = true
145170
)
146171

147172
let fslabLayoutTemplate =
148173
Layout.init(
149-
Paper_bgcolor = "#2D3E50",
150-
Plot_bgcolor= "#2D3E50",
151-
Font = Font.init(Color = "#438AFE")
174+
Paper_bgcolor = "#200117",
175+
Plot_bgcolor= "#200117",
176+
Font = Font.init(Color = "white")
152177
)
153178
|> Layout.AddLinearAxis((StyleParam.AxisId.X 1),(initFslabAxisTemplate()))
154179
|> Layout.AddLinearAxis((StyleParam.AxisId.Y 1),(initFslabAxisTemplate()))
155180

156181
Template.init(fslabLayoutTemplate)
157-
|> Template.withColorWay ColorWays.fslab
182+
|> Template.withColorWay ColorWays.fslab
183+
184+
185+
let transparent =
186+
let initTransparentAxisTemplate() =
187+
Axis.LinearAxis.init(
188+
Showline = true,
189+
Zeroline = true
190+
)
191+
192+
let defaultLayout =
193+
Layout.init (
194+
Paper_bgcolor = "rgba(255, 255, 255, 0)",
195+
Plot_bgcolor = "rgba(255, 255, 255, 0)"
196+
)
197+
|> Layout.AddLinearAxis((StyleParam.AxisId.X 1),(initTransparentAxisTemplate()))
198+
|> Layout.AddLinearAxis((StyleParam.AxisId.Y 1),(initTransparentAxisTemplate()))
199+
200+
Template.init(defaultLayout)
201+
202+
let transparentMirrored =
203+
let initTransparentAxisTemplate() =
204+
Axis.LinearAxis.init(
205+
Showline = true,
206+
Zeroline = true,
207+
Mirror = StyleParam.Mirror.All,
208+
Ticks = StyleParam.TickOptions.Inside
209+
)
210+
211+
let defaultLayout =
212+
Layout.init (
213+
Paper_bgcolor = "rgba(255, 255, 255, 0)",
214+
Plot_bgcolor = "rgba(255, 255, 255, 0)"
215+
)
216+
|> Layout.AddLinearAxis((StyleParam.AxisId.X 1),(initTransparentAxisTemplate()))
217+
|> Layout.AddLinearAxis((StyleParam.AxisId.Y 1),(initTransparentAxisTemplate()))
218+
219+
Template.init(defaultLayout)

0 commit comments

Comments
 (0)