-
05-09-2019 - |
题
看过了 一些 建议 对于图表,我想知道什么是最适合我的问题的。
我想将有向图渲染到浏览器中显示的 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,这显然是为此而设计的:
我们创建 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的 '点' 格式,的框架:
请参阅 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 ;
...后跟一个右括号
}
也许退房谷歌图表?
请参阅这个问题,尤其是斯蒂芬的回答约prefuse。我读了你不需要的交互性,但仍prefuse可能是有用的。
的JFreeChart 可能是你想要去的方式,但你做的图表和图形之间的区别。也许你能解释一下你的意思是什么。我平时同义词使用这些术语。 :)
JFreeChart的具有良好的分散,酒吧和线路图,以及有趣的像馅饼和拨号所以也许它会为你工作。