8

我正在编写一个客户端应用程序。我想使用 ClojureScript。我想生成矢量图形(图形、图表、折线图)。

我应该读什么?

[唯一的硬性要求是 ClojureScript -- (1) 我喜欢 Clojure,并且想在 Clojure 中完成整个应用程序 (2) 这需要在浏览器中运行]

谢谢!

4

4 回答 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 问题。

于 2012-04-26T21:53:59.940 回答
3

由于可以在 clojurescript 中使用常规 javascript 库,我想您可以使用Raphaeld3之类的东西来处理 svg。d3 可能更适合您的需求,尽管使用起来有点困难。

总有直接使用 DOM 的替代方法,您不需要任何教程。SVG 标准结构良好且易于理解。

于 2012-04-26T13:55:07.947 回答
2

我建议查看 Vega-Lite 和 Vega,它们是围绕图形语法(R 流行的 ggplot2 库背后的力量)的思想设计的。GG 的核心思想是数据可视化被指定为数据属性如何映射到数据可视化美学的声明性描述。Vega-Lite & Vega 在提供交互语法方面更进一步,它允许构建交互式数据可视化和复杂的浏览器视图。此外,它提高了 GG 的声明性质,因为 Vega-Lite 和 Vega 规范被描述为纯数据 (JSON),这使得它非常符合 Clojure 世界的数据驱动哲学,并为与不同语言等无缝互操作的方式。

Vega-Lite 或多或少是更高杠杆的日常数据科学工具,专注于基于非常简陋的规范提供高杠杆和自动化。它编译为 Vega,它是 Vega-Lite 的较低级别和更强大但自动化程度较低的版本。通常从 Vega-Lite 开始,仅在需要时切换到 Vega 就足够了。

有关 Vega 和 Vega-Lite 的更多信息,请参阅:https ://vega.github.io 。

如果您想使用来自 Clojure 或 ClojureScript 的 Vega-Lite 或 Vega,您可能希望查看我编写的一个名为 Oz 的小而灵活的包装器库:

https://github.com/metasoarous/oz

于 2019-01-28T17:38:24.077 回答
1

这是一个老问题,但对于现在找到它的任何人来说,另一种选择是使用strokes library,在提出问题时它不可用。Strokes 是 d3.js 的 Clojure 包装器。

于 2015-08-18T04:10:37.957 回答