6 people like it.
Like the snippet!
University enrollment (CZE vs. EU)
Using World Bank type provider and FSharpChart to show average university enrollment in Czech Republic, European Union and OECD members.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
|
// Reference type provider and FSharpChart
#r @"WorldBank.TypeProvider.dll"
#load @"FSharpChart.fsx"
open Samples.Charting
open System.Windows.Forms.DataVisualization.Charting
open System.Drawing
let dashGrid = Grid(LineColor = Color.Gainsboro, LineDashStyle = ChartDashStyle.Dash)
/// Draws line chart from year-value pairs using specified label & color
let lineChart (data:seq<int * float>) name color =
( FSharpChart.Line(Array.ofSeq data, Name=name)
|> FSharpChart.WithSeries.Style(BorderWidth = 2, Color = color) )
:> ChartTypes.GenericChart
/// Calculate average university enrollment for EU
let avg =
[ for c in WorldBank.Regions.``European Union`` do
yield! c.``School enrollment, tertiary (% gross)`` ]
|> Seq.groupBy fst
|> Seq.map (fun (y, v) -> y, Seq.averageBy snd v)
|> Array.ofSeq
|> Array.sortBy fst
// Generate nice line chart combining CZ and EU enrollment
FSharpChart.Combine
[ yield lineChart avg "EU" Color.Blue
let cz = WorldBank.Countries.``Czech Republic``
yield lineChart cz.``School enrollment, tertiary (% gross)`` "CZ" Color.DarkRed ]
|> FSharpChart.WithLegend(Docking = Docking.Left)
|> FSharpChart.WithArea.AxisY(MajorGrid = dashGrid)
|> FSharpChart.WithArea.AxisX(MajorGrid = dashGrid)
|
namespace System
namespace System.Windows
namespace System.Windows.Forms
namespace System.Drawing
val dashGrid : obj
Full name: Script.dashGrid
type Color =
struct
member A : byte
member B : byte
member Equals : obj:obj -> bool
member G : byte
member GetBrightness : unit -> float32
member GetHashCode : unit -> int
member GetHue : unit -> float32
member GetSaturation : unit -> float32
member IsEmpty : bool
member IsKnownColor : bool
...
end
Full name: System.Drawing.Color
property Color.Gainsboro: Color
val lineChart : data:seq<int * float> -> name:'a -> color:'b -> 'c
Full name: Script.lineChart
Draws line chart from year-value pairs using specified label & color
val data : seq<int * float>
Multiple items
val seq : sequence:seq<'T> -> seq<'T>
Full name: Microsoft.FSharp.Core.Operators.seq
--------------------
type seq<'T> = System.Collections.Generic.IEnumerable<'T>
Full name: Microsoft.FSharp.Collections.seq<_>
Multiple items
val int : value:'T -> int (requires member op_Explicit)
Full name: Microsoft.FSharp.Core.Operators.int
--------------------
type int = int32
Full name: Microsoft.FSharp.Core.int
--------------------
type int<'Measure> = int
Full name: Microsoft.FSharp.Core.int<_>
Multiple items
val float : value:'T -> float (requires member op_Explicit)
Full name: Microsoft.FSharp.Core.Operators.float
--------------------
type float = System.Double
Full name: Microsoft.FSharp.Core.float
--------------------
type float<'Measure> = float
Full name: Microsoft.FSharp.Core.float<_>
val name : 'a
val color : 'b
module Array
from Microsoft.FSharp.Collections
val ofSeq : source:seq<'T> -> 'T []
Full name: Microsoft.FSharp.Collections.Array.ofSeq
val avg : (System.IComparable * obj) []
Full name: Script.avg
Calculate average university enrollment for EU
val c : obj
module Seq
from Microsoft.FSharp.Collections
val groupBy : projection:('T -> 'Key) -> source:seq<'T> -> seq<'Key * seq<'T>> (requires equality)
Full name: Microsoft.FSharp.Collections.Seq.groupBy
val fst : tuple:('T1 * 'T2) -> 'T1
Full name: Microsoft.FSharp.Core.Operators.fst
val map : mapping:('T -> 'U) -> source:seq<'T> -> seq<'U>
Full name: Microsoft.FSharp.Collections.Seq.map
val y : System.IComparable
val v : seq<System.IComparable * obj>
val averageBy : projection:('T -> 'U) -> source:seq<'T> -> 'U (requires member ( + ) and member DivideByInt and member get_Zero)
Full name: Microsoft.FSharp.Collections.Seq.averageBy
val snd : tuple:('T1 * 'T2) -> 'T2
Full name: Microsoft.FSharp.Core.Operators.snd
val sortBy : projection:('T -> 'Key) -> array:'T [] -> 'T [] (requires comparison)
Full name: Microsoft.FSharp.Collections.Array.sortBy
property Color.Blue: Color
property Color.DarkRed: Color
More information