Haskell-d3js中的条形图
我决定浏览哈斯克尔的图书馆,但后来没有通过Stackage安装Haskell-d3js中的条形图,haskell,d3.js,data-visualization,Haskell,D3.js,Data Visualization,我决定浏览哈斯克尔的图书馆,但后来没有通过Stackage安装 $ stack install d3js Run from outside a project, using implicit global project config Using resolver: lts-5.2 from implicit global project's config file: /home/john/.stack/global-project/stack.yaml While constructing
$ stack install d3js
Run from outside a project, using implicit global project config
Using resolver: lts-5.2 from implicit global project's config file: /home/john/.stack/global-project/stack.yaml
While constructing the BuildPlan the following exceptions were encountered:
-- Failure when adding dependencies:
base: needed (>=4.6 && <4.7), 4.8.2.0 found (latest applicable is 4.6.0.1)
needed for package d3js-0.1.0.0
即使是这个简单的例子,我也有很多问题如何具体化工作?我不得不在字典中查找这个词:
把(抽象的东西)视为物质或具体的东西
你知道吗?
具体化这个词试图在抽象和真实之间架起一座桥梁。恰当地说,它源于一个“真实”的祖先——拉丁名词Res,意思是“事物”。“再化”和相关名词“物化”在19世纪中叶首次出现在英语中,尽管“物化”是几年前的事,有些词典认为“归化”是名词的背面构成。在一般用法中,这些词指的是以真实或物质的方式考虑或提出抽象概念的行为,或通过具体的例子来判断某事物的行为
如上所述,d3.js库中的具体化函数将表示d3.js对象的Haskell实体转换为实际的d3.js代码。我们有可变现对象的例子吗?我们可以说:
reify (box "#div1" (300,300) >>= bars n 300 (Data1D [100,20,80,60,120]))
括号中的对象是可重新定义的对象。浏览源代码既有启发性又令人沮丧:
-- |Instances of Reifiable can generate a JavaScript code fragment.
class Reifiable a where
reify :: a -> Text
这是从有可变现对象的例子吗?让我们看看:
这些是可修改类型的示例,但它们没有告诉我们如何在haskell-d3js中构造图表
-- | box parent (w,h) makes an SVG container in a parent element with dimension w x h.
box :: Selector -> (Double,Double) -> St (Var' Selection)
box parent (w,h) = do
assign
$ ((d3Root
>>> select parent
>>> func "append" [PText "svg"]
>>> width w
>>> height h
>>> style "background" "#eef") :: Chain () Selection)
bars :: Int -> Double -> Data1D -> Var' Selection -> St ()
bars n width ps (Var' elem) = do
let bar_w = width / (fromIntegral n)
v <- assign $ Val' (mkRectData bar_w ps)
execute $
(Val elem :: Chain () Selection)
>>> addRect v
>>> fill' "red"
不确定您的问题是什么,但以下是如何运行d3js演示:
stack new demo
cd demo
cabal get d3js-0.1.0.0
解析器:
设置相对较新(例如>=5.0)
stack.yaml
文件中,将packages
节更改为:
packages:
- '.'
- d3js-0.1.0.0
d3js-0.1.0.0/d3js.cabal
中修改build dependens
行,内容如下:
build-depends: base >=4.6
基的上限
)
demo.cabal
中,使库
节看起来像:
library
hs-source-dirs: src
exposed-modules: Lib
build-depends: base >= 4.8 && < 5, d3js, text
default-language: Haskell2010
stack ghci
并运行类似于test13
函数的操作。查看generated.js
中的输出d3js
包已经有一段时间没有更新了,它对base
包施加了过于严格的上限。事实证明,使用最新的base
它可以很好地编译,因此我们将d3js源代码作为我们自己项目的一部分,并对其进行调整以使其能够编译。不确定您的问题是什么,但下面是如何让d3js演示运行:
stack new demo
cd demo
cabal get d3js-0.1.0.0
解析器:
设置相对较新(例如>=5.0)
stack.yaml
文件中,将packages
节更改为:
packages:
- '.'
- d3js-0.1.0.0
d3js-0.1.0.0/d3js.cabal
中修改build dependens
行,内容如下:
build-depends: base >=4.6
基的上限
)
demo.cabal
中,使库
节看起来像:
library
hs-source-dirs: src
exposed-modules: Lib
build-depends: base >= 4.8 && < 5, d3js, text
default-language: Haskell2010
stack ghci
并运行类似于test13
函数的操作。查看generated.js
中的输出d3js
包已经有一段时间没有更新了,它对base
包施加了过于严格的上限。事实证明,使用最新的base
可以很好地编译它,因此我们将d3js源代码作为我们自己项目的一部分,并对其进行调整,以使其能够编译。这很好,您可以运行它。我想知道当你制作不属于他的例子的图表时会发生什么?“Erikr也可以考虑将你的补丁规则提交到