使用Haskell绘制图表

10

使用Haskell绘制简单图表是否可行? 你们中的任何人可以向我展示如何做到这一点吗?

该图表应包含至少3个点。

2个回答

8

7
除了图表之外,还有一些非常好的与语言无关的绘图库/系统可从Haskell中使用。我自己使用Vega和matplotlib。

Vega

您可以使用Vega-Lite和Haskell包hvega,这将为您提供一个带有使用vega-lite js库绘制的图表的html文件。

基本用法:

import           Graphics.Vega.VegaLite
main = do
 toHtmlFile "myplot.html" $ toVegaLite
  [ dataFromUrl "rows.tsv" [TSV]
  , mark Bar [MTooltip TTEncoding]
  , enc []
  , height 600
  , width 400
  ]
 where enc = encoding
      . position X [ PName "date"
                   , PmType Ordinal
                   ]
      . position Y [ PName "joy"
                   , PmType Quantitative
                   ]
      . color [MName "activity", MmType Nominal]

将tsv和html文件放在由Web服务器提供的目录中,例如在该目录中运行$ python -m SimpleHTTPServer。此示例提供了三列的堆叠条形图(假设rows.tsv中有代码中使用的列名):

vega-haskell plot example

文档中有许多示例:https://hackage.haskell.org/package/hvega/docs/Graphics-Vega-Tutorials-VegaLite.html

matplotlib

如果您可以接受安装一些Python依赖项,matplotlib使交互式绘图和探索变得容易。

简单示例:

onscreen $ let b = bar [21..23] in
   b [56,57,56] @@ [o2 "color" "#4C78A8"] 
 % b [26,24,25] @@ [o2 "color" "#F58518"] 
 % b [16,15,14] @@ [o2 "color" "#E45756"] 

matplotlib-haskell plot example

查看readme获取更多示例。

Plotly

Plotly(最初是为R设计的)可通过plotlyhs包从Haskell中使用。您可以得到一个独立的交互式绘图的html页面。

示例用法:https://glutamate.github.io/plotlyhs/

Gnuplot

有各种包可以创建gnuplot脚本,可用于制作png等:https://hackage.haskell.org/packages/search?terms=gnuplot


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接