使用Haskell绘制图形

时间:2013-12-29 11:40:02

标签: haskell graph plot

是否可以使用Haskell绘制简单的图形? 你们中的任何人都可以告诉我该怎么做吗?

图表应至少包含3个点

2 个答案:

答案 0 :(得分:2)

haskell-chart似乎很好。

wiki包含使用该包绘制的图表列表。

答案 1 :(得分:0)

除了 Chart 之外,还有一些非常好的与语言无关的绘图库/系统,可以从 Haskell 使用。我使用 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 具有代码中使用的列名):

enter image description here

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

情节

Plotly(最初用于 R)可从 Haskell 使用包 plotlyhs。您会得到一个带有交互式绘图的独立 html 页面。

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

Gnuplot

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