Clojurescript,JavaScript,SVG,图表和图形

8
我正在编写一个客户端应用程序,希望使用ClojureScript。我想生成矢量图形(图形、图表、折线图)。
我应该读些什么?
唯一的硬性要求是ClojureScript - (1) 我喜欢Clojure,并且希望整个应用程序都使用Clojure编写 (2) 这需要在浏览器中运行
谢谢!
4个回答

12

自荐一下:您可以使用C2,这是一个Clojure/ClojureScript数据可视化库。(Github在这里)。

其核心理念与D3相同——将数据映射到DOM元素上——但由于Clojure更强大的语义和数据结构,它比D3/JavaScript更具可组合性。

文档可能需要改进,但如果您正在使用SVG制作传统图表,请查看轴和刻度生成函数:

https://github.com/lynaghk/c2/blob/master/src/cljx/c2/svg.cljx

https://github.com/lynaghk/c2/blob/master/src/cljx/c2/ticks.cljx

虽然目前还没有正式发布0.1.0版本,但我们在Keming Labs已经在几个大型web和iOS项目中使用它了。

如果您有特定的数据可视化需求且不确定如何解决,欢迎@lynaghk联系我或在Github上提出问题。


科明实验室的实际位置在哪里?可能在旧金山湾区吗? - user1311390
我们在阳光明媚的俄勒冈州波特兰市,不过我每个月或两个月会去一次海湾。 - Kevin L.

3
由于常规的javascript库可以在clojurescript中使用,我猜你可以使用像Raphaeld3这样的工具来处理svg。虽然d3更适合您的需求,但它比较难使用。
当然,还有直接使用DOM的替代方案,您不需要任何教程即可操作。 SVG标准结构良好且易于理解。

2
我建议您了解Vega-Lite和Vega,它们是围绕着图形语法(R流行的ggplot2库背后的力量)的思想设计的。GG的核心思想是将数据可视化指定为如何将数据属性映射到数据可视化美学的声明性描述。 Vega-Lite和Vega在提供交互语法方面更进一步,这允许构建交互式数据可视化和复杂的浏览器视图。此外,它在GG的声明性本质上进行了升级,因为Vega-Lite和Vega规范被描述为纯数据(JSON),这使其与Clojure世界的数据驱动哲学非常一致,并为不同语言之间的无缝互操作铺平了道路。
Vega-Lite更多地是高级别的、日常的数据科学工具,专注于基于非常简洁的规范提供高度的杠杆作用和自动化。它编译到Vega,Vega是一个稍微低级别、更强大但较少自动化的版本。通常从Vega-Lite开始,只有在需要时才切换到Vega即可。
有关Vega和Vega-Lite的更多信息,请参见:https://vega.github.io
如果您希望从Clojure或ClojureScript使用Vega-Lite或Vega,您可能希望查看我编写的一个名为Oz的小而灵活的包装库:https://github.com/metasoarous/oz

1
这是一个老问题,但对于现在找到它的任何人来说,另一个选项是使用笔画库,这在提问时不可用。Strokes是d3.js的Clojure包装器。

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