图表平台

时间:2009-06-13 02:57:15

标签: java flash real-time charts

寻找实时大型数据集图表平台的选项,以处理大量不断发展的数据,并通过浏览器以可用的方式显示。

需要基于数据库后端与某些Flash应用程序的“读取XML文件”方法。

4 个答案:

答案 0 :(得分:2)

JFreeChart是一个免费且可扩展的解决方案。

http://www.jfree.org/jfreechart/

答案 1 :(得分:1)

  1. 使用JSON将数据提供给浏览器 - 您可能需要 - 用于更新客户端的信息;
  2. 使用Raphaël
  3. 绘制数据

    这可以为您提供更高的吞吐量,因为图形是在客户端重新生成的,并且在用于绘图的平台内。

    以下是您可以实现的几个示例:

    chart http://img140.imageshack.us/img140/5143/rapahelchart.png graph http://img269.imageshack.us/img269/6679/raphaelgraph.png

答案 2 :(得分:0)

由于图表可以在浏览器上查看,因此您可以使用类似gnuplot的内容生成数据的图像文件并显示它们。 Gnuplot非常灵活,您可以创建几乎任何东西,而且速度非常快。但是你必须自己阅读数据并将其输入到gnuplot中。如果你想坚持使用Java,那么gnuplot有一些Java接口。将刷新标头设置为合理数量并观察您的数据更新。

请点击此处了解gnuplot:http://www.gnuplot.info

请参阅此处有关java接口的信息:http://www.gnuplot.info/links.html

答案 3 :(得分:0)

我曾经不得不显示150台机器和100,000个任务的甘特图。我用自定义渲染编写了一个自定义Java小程序,数据传输由http + java序列化api处理。我发现任何其他解决方案(SVG,VML,Flash,图像标签)都太慢而且难以操作。

更新Here是图片的样子。不幸的是,社区,这是一个工业项目,因此,源代码不公开。我只能分享一些关于它的概念。

图表区域包含几个不同的组件:水平和垂直滚动条,图表区域,时间标签和每侧的两个表格。这些组件通过事件处理程序链接在一起。如果正在滚动/更改它会影响其他人。甘特图由填充的矩形组成,其中颜色用于指示任务的状态。渲染在paint()方法中完成,循环遍历每条可见线以及可显示的开始日期之间。渲染使用积极剪辑而不是依赖Graphics2D的剪切功能。用户可以平移和缩放视图。

数据存储在可序列化的数据结构中。服务器端Java代码包含整个数据结构的缓存。此结构每30秒刷新一次,但只从备份数据库中检索差异。然后由applet查询数据,组合到甘特图模型中,序列化并返回到客户端。客户端/小程序端的数据刷新不是自动的:用户需要单击刷新按钮 - 这样他们就可以评估图片而不会发生意外更改。

渲染甘特图不需要那么多的花哨 - fillRect,AlphaComposite,drawLine。如果您需要更复杂的图像,则需要使用我的方法进行更多编码。