使用Haskell绘制简单图表是否可行? 你们中的任何人可以向我展示如何做到这一点吗?
该图表应包含至少3个点。
您可以使用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
中有代码中使用的列名):
文档中有许多示例: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"]
查看readme获取更多示例。
Plotly(最初是为R设计的)可通过plotlyhs包从Haskell中使用。您可以得到一个独立的交互式绘图的html页面。
示例用法:https://glutamate.github.io/plotlyhs/
有各种包可以创建gnuplot脚本,可用于制作png等:https://hackage.haskell.org/packages/search?terms=gnuplot