Haskellで図の描画(gnuplot)-使用例-
Haskellで図の描画(gnuplot)-解説編-の双子記事です。
Haskell でグラフ作成
Haskellで遊んでいると、どうしてもグラフを出力したくなります(この記事でのグラフはすべて図のグラフです)。代表的なグラフ作成の方法として、Chart と gnuplotがありますが、今回は Gnuplot を紹介します。
gnuplotを使う利点としては、セットアップが簡単であることでしょう。例えば Ubuntuなら、
sudo apt-get install gnuplot
cabal install gnuplot
でインストールできます。
使うときも、
import Graphics.Gnuplot.Simple
で済みます。
以前は使用例と解説両方を書く予定でしたが、想像以上に書きたい内容が多いので、解説は別記事にします。この記事では PNG, EPS に出力するコードのサンプルを載せていく予定です。
基本、コメントアウトの箇所を編集することでグラフを変更することができると思います。
当たり前ですが、不明な点は、gnuplot自体、Graphic.Gnuplotの両方調べるのがポイントです。
2D軌跡
import Graphics.Gnuplot.Simple
--z::[[(Double,Double)]] legend::[String]
costumPlotPaths z legend = plotPathsStyle atribute plotstyle
where
fontType = "Helvetica"
tics = Custom "tics" ["font","\""++fontType++",16\""] -- 目盛りのフォントの変更
xlavel = Custom "xlabel" ["font","\""++fontType++",20\""] -- xlabelのフォントの変更
ylavel = Custom "ylabel" ["font","\""++fontType++",20\""] -- ylabelのフォントの変更
keyFont = Custom "key" ["font","\""++fontType++",18\""] -- 凡例のフォントの変更
titleFont= Custom "title" ["font","\""++fontType++",24\""] -- タイトルのフォントの変更
key = [(Key (Just["box lt 8 lw 1"]))]--凡例の枠囲み凡例の位置変更はこのリストに(Key (Just["right bottom"]))等を追加
label = [(YLabel "y"),(XLabel "x")]--軸の見出し
save = [EPS "test.eps",Custom "terminal" ["eps","enhanced","color"],Custom "bmargin" ["4"]]
--save = [PNG "test.png"] -- PNGで出力するときは上の一文をコメントアウトしこれを使う。
title = [Title "sin and arcsin"]--グラフのタイトル
size = [Aspect (Ratio 0.7)]--グラフの形 縦/横
font = [tics,xlavel,ylavel,keyFont,titleFont]
atribute = (save++key++label++title++size++font)--fontは後述
plotstyle = [x|i <-[0..(length z-1)],let x = (defaultStyle {lineSpec = CustomStyle [(LineTitle (legend!!i)),(LineWidth 2.0)]},z!!i)]
--例
main = do
let x = linearScale 1000 ((-2::Double)*pi,2*pi)
let y = fmap sin x
let z = zip x y
let w = zip y x
let legend = ["sin","arcsin"]--線の名前、凡例に反映
costumPlotPaths [z,w] legend
import Graphics.Gnuplot.Simple
--z::[[(Double,Double)]] legend::[String]
costumPlotPaths z legend = plotPathsStyle atribute plotstyle
where
fontType = "Helvetica"
tics = Custom "tics" ["font","\""++fontType++",16\""] -- 目盛りのフォントの変更
xlavel = Custom "xlabel" ["font","\""++fontType++",20\""] -- xlabelのフォントの変更
ylavel = Custom "ylabel" ["font","\""++fontType++",20\""] -- ylabelのフォントの変更
keyFont = Custom "key" ["font","\""++fontType++",18\""] -- 凡例のフォントの変更
titleFont= Custom "title" ["font","\""++fontType++",24\""] -- タイトルのフォントの変更
key = [(Key (Just["box lt 8 lw 1"]))]--凡例の枠囲み凡例の位置変更はこのリストに(Key (Just["right bottom"]))等を追加
label = [(YLabel "y"),(XLabel "x")]--軸の見出し
save = [EPS "test.eps",Custom "terminal" ["eps","enhanced","color"],Custom "bmargin" ["4"]]
--save = [PNG "test.png"] -- PNGで出力するときは上の一文をコメントアウトしこれを使う。
title = [Title "sin and arcsin"]--グラフのタイトル
size = [Aspect (Ratio 0.7)]--グラフの形 縦/横
font = [tics,xlavel,ylavel,keyFont,titleFont]
atribute = (save++key++label++title++size++font)--fontは後述
plotstyle = [x|i <-[0..(length z-1)],let x = (defaultStyle {lineSpec = CustomStyle [(LineTitle (legend!!i)),(LineWidth 2.0)]},z!!i)]
--例
main = do
let x = linearScale 1000 ((-2::Double)*pi,2*pi)
let y = fmap sin x
let z = zip x y
let w = zip y x
let legend = ["sin","arcsin"]--線の名前、凡例に反映
costumPlotPaths [z,w] legend
今後の予定
急ぎ解説記事を更新、グラフの種類を増やします。
Author And Source
この問題について(Haskellで図の描画(gnuplot)-使用例-), 我々は、より多くの情報をここで見つけました https://qiita.com/tkch_pe/items/1510338cf9fb324b7ab9著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .