Java web图形的优化绘制
看了一些图表,我想知道什么是最适合我的问题 我想将有向图呈现到浏览器中显示的servlet/图片。应该对位置进行某种优化。不需要依赖Swing。算法并不重要,因为图的结构由业务逻辑决定。它将希望能够添加标签的边缘以及。 如果我可以将其作为png/svg使用,那将是最佳选择 你会推荐哪种图书馆/服务 澄清: 1) 问题是所有关于图形的-像-不是- 2) flot,谷歌图表-无法绘制图表,只能绘制图表,或者我错过了什么 3) 不,我不需要互动 4) graphviz会很好,但是GrappaJava库已经过时,并且是基于swing/awt构建的。虽然从理论上讲可以渲染swing到图像,但在服务器应用程序中,这并不是我最喜欢的方式 5) 如果图像不是本地托管的,可以使用在线服务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库
编辑:添加到维基百科的链接,以澄清图形/图表术语也许可以查看?看看我可以衷心推荐-太棒了 请参阅。试试看。它被各种基于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…等等)
- 我还喜欢更完整的方法,内置触摸支持、插件、文件格式等