混合服务器端java和客户端javascript图表库?

时间:2011-04-15 13:32:51

标签: java javascript charts

是否有一个库可以为Java和Javascript生成相同数据的相同图表?

我的任务是:

  • 在浏览器中显示一些华丽的动态图表 ,更好的动态工具提示,缩放等等(我在想Javascript)
  • 并在服务器端生成相同(或类似的)图表,用于在电子邮件中自动发送 (在这种情况下根本没有浏览器)。

我想避免Flash for iPhone的互操作性。

有一些像Eastwood / JFreeChart这样的静态服务器端图表,但我想让它在浏览器中更活跃。

是的我可以通过Ajax重新加载静态图像。还有其他选择吗?

2 个答案:

答案 0 :(得分:9)

为什么这个问题已经超过一年了但却没有答案?!我建议采用一种相当可疑且有点硬核的方法。


使用JavaScript,真棒!

以下是您的成功公式:d3.js + jsdom + Rhino + Batik

具体做法是:

  1. 使用像d3.js这样灵活的JavaScript库生成图表。

  2. 使用jsdom运行d3服务器端。 Jsdom是纯JS库,已知d3正在处理它。

  3. 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对你不起作用,你可以尝试一下。

  4. 使用Batik栅格化d3生成的SVG。 Batik even supports scripting inside SVG via Rhino.这意味着您可以根据需要生成服务器端的交互式图表。我也在实践中使用它并且有很好的经验。

  5. 整个方法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

此处:https://github.com/one2team/highcharts-serverside-export