0

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

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

4

4 回答 4

2

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

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

于 2009-06-13T06:11:56.527 回答
1
  1. 使用 JSON 将数据提供给浏览器 - 正如您可能需要的那样 - 以更新客户端的信息;
  2. 使用Raphaël绘制数据

这应该会给您带来更高的吞吐量,因为图形是在客户端重新生成的,并且是在一个为绘图而设计的平台内。

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

图表 http://img140.imageshack.us/img140/5143/rapahelchart.png 图表 http://img269.imageshack.us/img269/6679/raphaelgraph.png

于 2009-06-13T20:57:50.983 回答
0

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

有关 gnuplot 的信息请参见此处:http ://www.gnuplot.info

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

于 2009-06-13T13:22:38.957 回答
0

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

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

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

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

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

于 2009-06-13T20:47:07.000 回答