不是真正的绘图库,但您可以使用 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。 (我对相关问题很感兴趣,并且我不断注意到这个问题的新潜在答案。)