Hatena::ブログ(Diary)

mmitouの日記

2012-09-12

HaskellからGnuplotを呼び出してチャートを描く

| 18:15

gnuplot用のパッケージをインストールして、

import Graphics.Gnuplot.Simple するだけ。とても簡単。

パッケージのインストール

$ cabal install gnuplot

チャートを描く

まずはGraphics.Gnuplot.Simpleをインポートする。

$ ghci
GHCi, version 7.0.4: http://www.haskell.org/ghc/  :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Prelude> import Graphics.Gnuplot.Simple 
Prelude Graphics.Gnuplot.Simple>

チャートを描く関数はみんなplot〜という名前になっている。

これらを呼び出してチャートを描画していく。

Prelude Graphics.Gnuplot.Simple> plot
plotDots        plotFuncs       plotLists       plotParamFunc   plotPathStyle   plotType
plotFunc        plotList        plotListsStyle  plotParamFuncs  plotPaths
plotFunc3d      plotListStyle   plotMesh3d      plotPath        plotPathsStyle

例えば0~2πまでのsinの値をプロットする場合は以下のように実行する。

linerScaleは、第二引数のタプルで指定された範囲の値を第一引数の数だけリストにして返す関数

plotPathの第一引数のリストで、プロット属性を指定する。

Prelude Graphics.Gnuplot.Simple> let xs = linearScale 1000 (0, 2*pi)
Prelude Graphics.Gnuplot.Simple> let ys = fmap sin xs
Prelude Graphics.Gnuplot.Simple> let points = zip xs ys
Prelude Graphics.Gnuplot.Simple> plotPath [(Title "hello")] points

これを実行すると以下のようにsinカーブが描画される。

f:id:mmitou:20120912181227p:image:left

トラックバック - http://d.hatena.ne.jp/mmitou/20120912/1347441319