haskell-chart

Last Change:05-Jul-2016.
Author:qh73xe
Reference:https://github.com/timbod7/haskell-chart/wiki

haskell で plot を行うためのライブラリです。

導入方法

以下のライブラリを導入します。

$ cabal update
$ cabal install chart-diagrams
$ cabal install chart-cairo
$ cabal install chart-gtk

注釈

stack を利用する場合

Haskell においてライブラリを導入する場合、 cabal が有名ですが、 stack を利用して全体的な環境は汚さないようにしていることもあると思います。 この場合には cabal での方法では上手く行かないので注意してください。

私の環境の場合、以下のように導入しました。

$ LANG=C stack install Chart-diagrams
$ LANG=C stack install Chart-cairo

基本的な使い方

ここでは、具体的な plot 設定は一切行わない感じで とりあえず描画ができるようにします。

testPlot.hs
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
import Graphics.Rendering.Chart.Easy
import Graphics.Rendering.Chart.Backend.Cairo

signal :: [Double] -> [(Double,Double)]
signal xs = [ (x,(sin (x*3.14159/45) + 1) / 2 * (sin (x*3.14159/5))) | x <- xs ]

main = toFile def "example1_big.png" $ do
    layout_title .= "Amplitude Modulation"
    setColors [opaque blue, opaque red]
    plot (line "am" [signal [0,(0.5)..400]])
    plot (points "am points" (signal [0,7..400]))

実行は以下の通りです.

$ runghc testPlot.hs

このようにすると、 example1_big.png が作成されます。 一方で単純に GUI で 図 の確認のみをしたい場合以下のようにすればよいです。

testPlot.hs
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
import Graphics.Rendering.Chart.Easy
import Graphics.Rendering.Chart.Backend.gtk

signal :: [Double] -> [(Double,Double)]
signal xs = [ (x,(sin (x*3.14159/45) + 1) / 2 * (sin (x*3.14159/5))) | x <- xs ]

main = toWindow 300 300 $ do
    layout_title .= "Amplitude Modulation"
    setColors [opaque blue, opaque red]
    plot (line "am" [signal [0,(0.5)..400]])
    plot (points "am points" (signal [0,7..400]))
  • ghci で対話的に描画を行う方法は現在検索中