clojure 中的交互式和动态绘图/图表

Posted

技术标签:

【中文标题】clojure 中的交互式和动态绘图/图表【英文标题】:Interactve and dynamic plots/charts in clojure 【发布时间】:2015-11-16 13:41:05 【问题描述】:

clojure 是否有任何用于显示动态图/图表的库,例如像振荡正弦波这样简单的库?

查看了 incanter 库,但它似乎只提供静态图。

【问题讨论】:

如下所述,还有quil。此外,还有一个 incanter.processing 模块。但无论如何,条条大路通向处理 :) 嗯...,这是个人喜好问题。我尝试了 Quil,但不喜欢使用 Processing 模型。开始使用 d3.js。它有自己的挑战——我不会撒谎——但更面向数据。不过,Incanter 处理模型是个好主意。 【参考方案1】:

不是真正的绘图库,但您可以使用 Java Processing 库的 quil 接口。

如果您愿意使用 Clojurescript,我建议您查看 d3.js 和 strokes 库,以便在 Clojurescript 中使用它。但是,这需要学习 d3.js 的古怪方法,并且即使您使用 Clojure 编写大部分代码,也需要在 html、DOM、CSS 和 javascript 方面进行大量思考。 [编辑:我现在认为直接从 Clojurescript 使用 d3.js 更简单;中风几乎没有什么好处。还有一些基于 d3.js 构建的 Clojurescript 图表库。例如,我发现 NVD3 很有用。]

还有一个全 Clojurescript C2 库,旨在实现 d3.js 的一些功能,但不允许动态绘图,尽管您可以使用自定义 CSS 添加动态功能。 (C2 并没有真正增长,AFAIK,但它得到了积极的维护。)

另一个可能实际上更容易(或不是)的选择是使用 Java 库来满足您的需求。毫无疑问有几个,包括JFreeChart。这也可能需要一些 Java 风格的思考,学习 Clojure-Java 互操作(根据 Java 库的结构,从简单易懂到丑陋、混乱和冗长)。

不管有什么价值,都有一些用于将 Java 与 R 连接起来的库,通过它的内置绘图、ggplot2 库和 lattice 库,R 具有非常好的绘图功能。所以理论上你可以用Clojure来控制Java来控制R,这可能不值得。有关 Java-to-R 库,请参阅 this question。

您还应该在 Incanter Google 小组中提问。也许有一些隐藏的技巧,或者正在开发中的东西可以满足您的需求。

编辑:Incanter 确实提供了一些名为 "dynamic plots" 的东西。我认为这不完全是您想要的:这些图表具有附加到滑块的参数,以便您可以看到图随时间的变化。尽管如此,Incanter 可以做到这一点的事实表明,创建一个响应数据变化而动态变化的图表可能并不难。

更多编辑:由于 JFreeChart 是 Incanter 用来绘制图表的工具,而 JFreeChart 是一个能够生成动态图表的 Java 库,一个选项是在 Incanter 生成的图表对象上使用 Java 方法,如 this answer建议。

(编辑:搜索“clojure jfreechart”会出现一些库和教程,旨在帮助人们将 JFreeChart 与 Clojure 结合使用。)

Anndd ...再编辑:https://github.com/liebke/apogee 看起来它可能正是你想要的,jyriand。 (我对相关问题很感兴趣,并且我不断注意到这个问题的新潜在答案。)

【讨论】:

Incanter 看起来很有希望。

以上是关于clojure 中的交互式和动态绘图/图表的主要内容,如果未能解决你的问题,请参考以下文章

R语言动态交互绘图|plotly包-交互式柱形图

spritekit 游戏中的动态贝塞尔绘图 - 最佳(性能)方法?

Flask框架:如何运用Ajax轮询动态绘图

Flask框架:运用Ajax轮询动态绘图

Flask框架:如何运用Ajax轮询动态绘图

R语言与医学统计图形-31动态交互绘图