看过了 一些 建议 对于图表,我想知道什么是最适合我的问题的。

我想将有向图渲染到浏览器中显示的 servlet/图片。应该对位置进行某种优化。最好不依赖 Swing。算法并不重要,因为图的结构是由业务逻辑决定的。希望能够向边缘添加标签。如果我可以将其作为 png/svg 提供,那将是最佳的。

您会推荐哪个图书馆/服务?

澄清:

1)问题都是关于图的 - 就像 有向无环图 - 不是 - 图表.

2)flot,Google Charts - 无法绘制图表,只能绘制图表,或者我错过了什么?

3)不,我不需要互动

4) graphviz 会很好,但是 grappa java 库已经过时了,并且是基于 swing/awt 构建的。虽然理论上可以将摆动渲染为图像,但这不是我最喜欢在服务器应用程序中实现的方式。

5) 最好使用图像不在本地托管的在线服务。

编辑:添加了维基百科的链接以澄清图形/图表术语

有帮助吗?

解决方案

除了等待数周听到那将解决一行代码所有问题的魔术框架,还有的只是写一些代码自己做你想要什么我的其他选项...(不是说这是10分钟的工作,但它可能是一天两天了,你发布你的问题超过两个星期前...)

你有过一看,例如,在上基于力的算法 - 它有伪代码和几个环节可能会有所帮助。

我假设它是布局算法是这样的问题,而不是创建一个BufferedImage,绘制其图形上下文的事,PNG编码并发送下来的插座。你真的不需要为框架的的位,我不认为。

其他提示

看一看 graphviz的

yFiles 可能是这个有用的。

如何的Graphviz的点组分?它产生的曲线图(未图表),输出到PNG和SVG,并支持标记的边缘。你可以掏出来点生成所需的图像,并返回一个img标签引用了。另外,您也可以返回一个img标签引用,将产生必要的图表中的URL(或检索缓存副本)。这里的点信息:

http://www.graphviz.org/pdf/dotguide.pdf

您也可以看看WebDot,这显然是为此而设计的:

http://www.graphviz.org/webdot/

尝试 爱视. 。它被各种基于网络的应用程序使用 数据挖掘, 静态程序分析, 矩阵可视化, 网络分析, ,等等。它也被一些人使用 媒体维基 作为他们的图形布局后端。

他们拥有庞大的数据库 示例图 请访问 aiSee.com。一探究竟。它支持边缘标签、导出到映射的 SVG 和 HTML,并且不依赖于 Swing。

我们创建 mxGraph 获得这样的要求。我们在2006年没有真正释放出来,但过了好一会儿注意到这个问题...

为了 服务器端, , 尝试 荣格, ,你可以运行它 蜡染 并生成漂亮的 SVG 或 PNG 文件。JUNG 拥有漂亮的设计和非常强大的布局算法......

另外,既然你提到了 “使用一个就好了 在线服务", ,graphviz提供了一个服务叫做 网点 渲染图表。

还有其他人沿着这条线......例如 http://graph.gafol.net/ (貌似已经下来了)

客户端:

  • 尝试 http://arborjs.org/ 对于一个最小的(ish)库,它专用于布局,如果您喜欢自己的渲染例程(div,canvas,svg,paper.js,处理...),请使用它ETC)。

  • 我也喜欢 http://sigmajs.org/ 要获得更完整的方法,请构建触摸支持、插件、文件格式等。

有趣的是,Eclipse项目具有SWT / JFace的组件/能够在纯Java显示和产生(输入/输出)的Graphviz的 '点' 格式,的框架:

ZEST(主页和下载链接)

请参阅 http://wiki.eclipse.org/Graphviz_DOT_as_a_DSL_for_Zest 使用情况的示例。

虽然ZEST被吹捧作为Eclipse插件,它似乎是,DOT-操纵API的可用于独立和外部到Eclipse安装。

干杯

您可能尝试sigma.js: http://sigmajs.org/

有在Javascript轻质,开源库到Web上显示大图。

JPGD 是在Java中的Graphviz解析器。这是一个的的抛弃,但代码是好的,明确的,如果你发现错误我敢肯定,笔者会接受贡献补丁。

虽然通告为解析器,它也是一台发电机。你可以建立图形为节点和边缘对象的集合,然后得到.DOT使用Graph.toString()。收到此作为图形将是一个简单的shell出到Graphviz的点的可执行文件。

可替换地,点是很容易产生自己。在最简单的情况下,它只是一个写盆栽报头的物质

digraph myGraph {

...接着每边一个边缘定义

node1 -> node2 ;

...后跟一个右括号

}

所以我查看了所有给出的答案和链接,看起来像 预保险丝/耀斑 将通过最优选择。它们具有非常吸引人的可视化效果,而且还内置了对图表的支持。

也许退房谷歌图表

您可以将 SVG 与 Batik 结合使用。我已经多次使用它来显示图形。使用 Java 1.5 的蜡染速度非常快。使用此解决方案,您可以使用 Java 对图形进行编程,而不依赖于 Swing。您可以在所需位置添加标签,将其托管为 Servlet 并将其显示为 png 或 svg。

您可以在 SVG 中创建图形(这是一个 XML 文档)。
你用 蜡染 将 SVG 文档转换为 PNG/JPG 图像。
您可以使用 Servlet 将此图像流式传输回浏览器。

在 Java 中,您构建一个 SVG(=XML) 文档。SVG 图表的示例可以在此处找到:有向图 和这里: 简单有向图

请参阅这个问题,尤其是斯蒂芬的回答约prefuse。我读了你不需要的交互性,但仍prefuse可能是有用的。

我可以全心全意建议海军报 - 优秀

请参阅例子这里

的JFreeChart 可能是你想要去的方式,但你做的图表和图形之间的区别。也许你能解释一下你的意思是什么。我平时同义词使用这些术语。 :)

JFreeChart的具有良好的分散,酒吧和线路图,以及有趣的像馅饼和拨号所以也许它会为你工作。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top