使用 Haskell 绘制图表

Pra*_*ika 10 plot haskell graph

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

该图应至少包含 3 个点

Sib*_*ibi 8

haskell-chart似乎不错。

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


unh*_*mer 7

除了 Chart 之外,Haskell 还提供一些非常好的与语言无关的绘图库/系统。我自己使用 Vega 和 matplotlib。

织女星

您可以将Vega-Lite与 Haskell 包hvega一起使用,它为您提供一个 html 文件,其中包含使用 vega-lite js 库绘制的图表。

基本用法:

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]
Run Code Online (Sandbox Code Playgroud)

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

vega-haskell 图示例

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

绘图库

如果您可以接受安装一些 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"] 
Run Code Online (Sandbox Code Playgroud)

matplotlib-haskell 绘图示例

有关更多示例,请参阅自述文件。

阴谋

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

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

Gnuplot

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