Java web图形的优化绘制

Java web图形的优化绘制,java,graph,server-side,graph-layout,Java,Graph,Server Side,Graph Layout,看了一些图表,我想知道什么是最适合我的问题 我想将有向图呈现到浏览器中显示的servlet/图片。应该对位置进行某种优化。不需要依赖Swing。算法并不重要,因为图的结构由业务逻辑决定。它将希望能够添加标签的边缘以及。 如果我可以将其作为png/svg使用,那将是最佳选择 你会推荐哪种图书馆/服务 澄清: 1) 问题是所有关于图形的-像-不是- 2) flot,谷歌图表-无法绘制图表,只能绘制图表,或者我错过了什么 3) 不,我不需要互动 4) graphviz会很好,但是GrappaJava库

看了一些图表,我想知道什么是最适合我的问题

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

你会推荐哪种图书馆/服务

澄清:

1) 问题是所有关于图形的-像-不是-

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

3) 不,我不需要互动

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

5) 如果图像不是本地托管的,可以使用在线服务


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

也许可以查看?

看看

我可以衷心推荐-太棒了

请参阅。

试试看。它被各种基于web的应用程序用于、、等等。它也被一些人用作他们的图形布局后端

他们在aiSee.com上有一个庞大的数据库。过来看。它支持边缘标签,导出到映射的SVG和HTML,并且不依赖于Swing。

可能是您想要的方式,但是您可以区分图表和图形。也许你可以解释一下你的意思。我通常将这些术语同义使用。:)


JFreeChart有很好的散点图、条形图和折线图,还有馅饼图和刻度盘图等有趣的图形,所以它可能适合您。

Graphviz的点组件如何?它生成图形(而不是图表),输出到PNG和SVG,并支持标记边。您可以向dot抛出以生成所需的图像,并返回引用该图像的img标记。或者,您可以返回一个img标记,该标记引用一个URL,该URL将生成所需的图形(或检索缓存副本)。以下是dot信息:

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


您可以将SVG与蜡染结合使用。我已经多次使用它来显示图形。使用Java1.5制作蜡染非常快。使用此解决方案,您可以用Java编程图形,而不依赖于Swing。您可以在需要的地方添加标签,将其作为Servlet托管,并将其显示为png或svg

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

在java中,您构建一个SVG(=XML)文档。SVG图形的示例可在此处找到: 这里:

可能对这一点有用。

请参阅,特别是Stephan关于使用前的回答。我听说您不需要交互性,但prefuse仍然可能有用。

是Java中的Graphviz解析器。它有点被抛弃了,但是代码很好而且清晰,如果你发现bug,我相信作者会接受贡献的修复

虽然它被宣传为解析器,但它也是一个生成器。您可以将图形构建为节点和边对象的集合,然后使用Graph.toString()获取.dot。将其作为图形将是Graphviz点可执行文件的一个简单外壳

或者,dot很容易自己生成。在最简单的情况下,只需编写一个封装的标题

digraph myGraph {
。。。然后是每条边的一个边定义

node1 -> node2 ;
。。。后面跟着一个右括号

}

因此,我对所有给定的答案和链接都进行了检查,看起来/将是最佳选择。
他们有非常吸引人的访问功能,另外他们还内置了对图形的支持。

除了等待数周来了解神奇的框架,它将在一行代码中解决您的所有问题外,还有另一个选择,就是自己编写一些代码来完成您想要的事情。。。(我不是说这需要10分钟的工作,但可能需要一两天,而你在两周前就发布了你的问题…)

例如,你看过维基百科上的条目吗?它有伪代码和一些可能有用的链接


我假设问题出在布局算法上,而不是创建一个BuffereImage,将其绘制到图形上下文中,对其进行PNG编码并将其发送到套接字。我不认为你真的需要一个框架来完成这一点。

对于服务器端,试试看,你可以运行它并生成漂亮的SVG或PNG文件。JUNG有很好的设计和非常强大的布局算法

另外,由于您提到“可以使用在线服务”,graphviz提供了一个名为渲染图的服务

沿着这条路线还有其他人。。。e、 g.(似乎在下降)

客户端:

  • 尝试一个最小的(ish)库,它是专门用于布局的,如果您喜欢使用它,可以使用自己的渲染例程(div、canvas、svg、paper.js、processing…等等)

  • 我还喜欢更完整的方法,内置触摸支持、插件、文件格式等


有趣的是,Eclipse项目有一个SWT/JFace组件/框架,能够以纯Java显示和生成(导入/导出)Graphviz的“点”格式:

有关用法示例,请参见

尽管ZEST被吹捧为一个Eclipse插件,但看起来点操作API可以独立使用,也可以在Eclipse安装外部使用

干杯

Rich

您可以尝试sigma.js:

它是一个轻量级的开源Javascript库,用于在Web上显示大型图形。