是否有一个库可以为Java和Javascript生成相同数据的相同图表?
我的任务是:
我想避免Flash for iPhone的互操作性。
有一些像Eastwood / JFreeChart这样的静态服务器端图表,但我想让它在浏览器中更活跃。
是的我可以通过Ajax重新加载静态图像。还有其他选择吗?
答案 0 :(得分:9)
为什么这个问题已经超过一年了但却没有答案?!我建议采用一种相当可疑且有点硬核的方法。
以下是您的成功公式:d3.js
+
jsdom
+
Rhino
+
Batik
具体做法是:
使用像d3.js这样灵活的JavaScript库生成图表。
使用jsdom运行d3服务器端。 Jsdom是纯JS库,已知d3正在处理它。
在Rhino内运行jsdom和d3 - 自1.6(yay, JSR-223!)以来,一个JavaScript引擎被烘焙到您心爱的JVM中。虽然,我建议您将其更新到最新版本(It's on Maven Central, neat!)。我想Node.JS可以做得更好,但我认为你已经坚持使用Java了。
另请注意,有一个较旧,更成熟且特定于Rhino的服务器端DOM实现 - EnvJs (requires Rhino 1.7R2, not R3)。如果jsdom对你不起作用,你可以尝试一下。
使用Batik栅格化d3生成的SVG。 Batik even supports scripting inside SVG via Rhino.这意味着您可以根据需要生成服务器端的交互式图表。我也在实践中使用它并且有很好的经验。
整个方法is known to work server-side with Node.JS as a JS engine and ImageMagick as a rasterizer但我认为没有理由说明为什么它也不适合你。
答案 1 :(得分:2)
原谅真正迟到的回复,但如何使用Highcharts呢?我正在寻找能够提供更多信息的链接,因为我输入了这个,但Highcharts提供了服务器端的“导出”功能。它的基本功能是它允许您下载图像的副本而无需实际需要浏览器。
我实现了这个功能,以便我可以接受请求参数,查询数据存储,使用Highcharts将这些数字绘制到所需的图形并将这些结果嵌入到电子邮件中(当然,将电子邮件发送给收件人)。
此处提供更多信息:http://www.highcharts.com/component/content/article/2-articles/news/52-serverside-generated-charts
和