読者です 読者をやめる 読者になる 読者になる

Getting a Good Grasp of F# (仮)

関数型言語F#をもっと楽しみたい

F#でなるべく簡単にグラフ表示をさせたい その4

F# Chart

今回はチャート・ライブラリ F# Chartingを利用してグラフを作成します。

VisualStudio 2013のプロジェクトにNugetを利用してライブラリをインストールするためにプロジェクトの「参照設定」から、右クリックメニュー項目「Nugetパッケージの管理」を選択。

f:id:pongitsune:20160203185959p:plain

 Nugetパッケージ管理の画面で、オンラインで「fsharp.charting」と文字列検索します。「FSharp.Charting」の項目が見つかったら「インストール」のボタンを押してインストール実行。

f:id:pongitsune:20160203190633p:plain

ライブラリを使って折れ線グラフを描くコードの例

プロジェクトの参照設定に、FSharp.Charting・System.Windows.Forms・System.Drawingが追加されていることを確認。

open System
open FSharp.Charting  
 
[<EntryPointSTAThread>]
let main _ = 
    let fscChart: FSharp.Charting.ChartTypes.GenericChart = 
         [ for x in 0.0.. 0.02 .. (Math.PI * 2.0) -> (x, Math.Sin x) ] 
         |> Chart.Line
 
    let chartCtrl: FSharp.Charting.ChartTypes.ChartControl = 
            new FSharp.Charting.ChartTypes.ChartControl(fscChart) 
    chartCtrl.Dock <- System.Windows.Forms.DockStyle.Fill
 
    let form = 
            new System.Windows.Forms.Form(Width = 700, Height = 400, 
                                            Text = "FSharp.Chartingのテスト")
    form.Controls.Add(chartCtrl)
       
    System.Windows.Forms.Application.Run(form)
    0 

 実行結果

Windowsアプリケーションとしてビルドして実行すると、以下のようなウィンドウが表示されます。

f:id:pongitsune:20160203193900p:plain

[2016-02-04 追記]

X軸方向のグリッド位置にハンパな値を割り振られてしまうので修正。

    let fscChart: FSharp.Charting.ChartTypes.GenericChart = 
         [ for x in 0.0.. 0.02 .. (Math.PI * 2.0) -> (x, Math.Sin x) ] 
         |> Chart.Line

 上記の部分に1行追加。

    let fscChart: FSharp.Charting.ChartTypes.GenericChart = 
         [ for x in 0.0.. 0.02 .. (Math.PI * 2.0) -> (x, Math.Sin x) ] 
         |> Chart.Line
         |> Chart.WithXAxis(Min = 0.0)

 ChartクラスのWithXAxisメソッドを呼び出してX軸方向の最小値を明示的に指定。この追加行において、クラスのメソッド引数のみで利用可能な「名前付き引数(Named Arguments)」及び「省略可能なパラメータ(Optional Arguments)」の文法が使われている。詳細はMSDN:パラメーターと引数 (F#)を参照のこと。

 実行結果

f:id:pongitsune:20160204211149p:plain