Getting a Good Grasp of F# (仮)

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

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

グラフといってもここでは英語で言うgraphではなくchartのこと。ここではグラフ描画にオープンソース・ソフトのgnuplotを利用します。

まずはgnuplotを下記URLからダウンロードしてインストール。

http://www.gnuplot.info/gnuplot公式ページ)

 

GUIでグラフを表示するためのプログラムをVisual Studio2013を使ってF#プロジェクトを(コンソールアプリケーションとして)作成してみます。

ただしコンソールアプリとは言え、gnuplotGUIを表示してくれるためコンソール・ウィンドウとは別にグラフ描画ウィンドウドも表示されます。

// System.Diagnostics.ProcessStartInfoを使う方法
// Gnuplotを予めインストールしておく
// コンソールアプリとしてビルドすること
open System
open System.Diagnostics
[<EntryPointSTAThread>]
do
    let GNUPLOT_PATH = @"D:\Program Files (x86)\gnuplot\bin\gnuplot.exe"  // ここは個々人のインストール環境に依存
    let gpProc =
      new ProcessStartInfo(
            FileName = GNUPLOT_PATH, 
            UseShellExecute = false,
            CreateNoWindow = false, 
            RedirectStandardInput = true) 
      |> Process.Start
    // タイトルのフォント指定 Meiyrio UIなら日本語表示もできる
    gpProc.StandardInput.WriteLine "set title font 'Meiyrio UI,25'"
    // タイトル文字列指定
    gpProc.StandardInput.WriteLine """set title '"sin(x)"と"1/2 * cos(x)"のグラフ描画の例'"""
    // ラインスタイルの指定  ※インデックスは1以上であること
    gpProc.StandardInput.WriteLine "set style line 1 linewidth 3 linecolor rgbcolor 'red'"
    gpProc.StandardInput.WriteLine "set style line 2 linewidth 3 linecolor rgbcolor 'green'"
    // グラフの描画  ※浮動小数点を使う点に注意   1/2 -> 1.0/2.0
    gpProc.StandardInput.WriteLine "plot sin(x) linestyle 1, 1.0/2.0 * cos(x) linestyle 2"
      
    printfn "表示完了 何かキーを押してください"
    // キー入力待ち(これがないとgnuplotウィンドウがすぐに閉じてしまうため必要)
    Console.ReadKey() |> ignore

このとき、変数 GNUPLOT_PATH はファイル gnuplot.exeへのパスを表す文字列。インストール先を確認してパスを指定すること。

let GNUPLOT_PATH = @"D:\Program Files (x86)\gnuplot\bin\gnuplot.exe"

注意)Windows版には wgnuplot.exe というよく似た名前の実行ファイルも存在するのでそちらと間違えないように。

実行結果

f:id:pongitsune:20151105201744j:plain

コンソール画面も同時に開いているので、ここに何かキー入力をするとアプリケーションは終了します。

f:id:pongitsune:20151105204816j:plain