【问题标题】:charting platform [closed]图表平台[关闭]
【发布时间】:2009-06-13 02:57:14
【问题描述】:

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

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

【问题讨论】:

    标签: java flash real-time charts


    【解决方案1】:

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

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

    【讨论】:

    • JFreeChart 可能不是实时数据的最佳选择,因为常见问题解答指出它并不真正支持实时图表。
    • 是的,近乎实时是一项关键要求。
    • 仅供参考:我们每天都使用 JFreechart 进行实时图表。
    • 想了解更多。
    【解决方案2】:
    1. 使用 JSON 将数据提供给浏览器(您可能需要这样做)以更新客户端的信息;
    2. 使用Raphaël绘制数据

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

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

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

    【讨论】:

    • 它是否允许“滚动”时间线、缩放和其他“交互性”?
    【解决方案3】:

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

    在此处查看有关 gnuplot 的信息:http://www.gnuplot.info

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

    【讨论】:

    • 看起来只是串行静态图像创建。
    【解决方案4】:

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

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

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

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

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

    【讨论】:

    • 这是一个有趣的方法,还有更多细节吗?
    猜你喜欢
    • 2016-06-02
    • 1970-01-01
    • 1970-01-01
    • 2018-08-05
    • 2010-09-08
    • 2011-01-23
    • 2020-05-05
    • 2011-01-13
    • 1970-01-01
    相关资源
    最近更新 更多