代码之家  ›  专栏  ›  技术社区  ›  Andreas Petersson

优化网络图形绘制

  •  11
  • Andreas Petersson  · 技术社区  · 16 年前

    见过 some suggestions 对于图表,我想知道什么是解决我问题的最佳方法。

    我想将一个定向图呈现给浏览器中显示的servlet/picture。应该对位置进行某种优化。最好不要依赖摇摆。算法并不重要,因为图的结构由业务逻辑决定。希望能够在边缘添加标签。 如果我可以将其作为PNG/SVG使用,那将是最佳的。

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

    澄清:

    1)问题是关于图形的 Directed Acyclic Graph -不- Charts .

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

    3)不,我不需要互动。

    4)GravVIZ会很好,但是GrAPPA Java库已经过时了,它是基于Swing /AWT构建的。虽然从理论上讲,它可能会呈现到图像上,但在服务器应用程序中,这并不是我最喜欢的方法。

    5)如果图片不在本地托管,可以使用在线服务。

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

    16 回复  |  直到 11 年前
        1
  •  3
  •   Neil Coffey    16 年前

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

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

    我假设是布局算法出了问题,而不是创建一个bufferedimage,绘制它的图形上下文,PNG编码它并将它发送到套接字。你真的不需要一个框架 那个 有点,我不认为。

        2
  •  8
  •   Stephen Doyle    16 年前

    看一看 graphviz

        3
  •  6
  •   RexE    16 年前

    yFiles 可能对这个有用。

        4
  •  5
  •   runako    16 年前

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

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

    您也可以看看Webdot,它显然是为这个目的而设计的:

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

        5
  •  3
  •   ЯegDwight kri    16 年前

    尝试 aiSee . 它被各种基于Web的应用程序用于 data mining , static program analysis , matrix visualization , network analysis 等等。它也被一些人使用 MediaWikis 作为他们的图形布局后端。

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

        6
  •  3
  •   Frodo Baggins    12 年前

    我们创造 mxGraph 以满足此类要求。我们确实在2006年发布过,但花了一段时间才注意到这个问题…

        7
  •  3
  •   wires    11 年前

    为了 服务器端 尝试 JUNG ,你可以用它来对付 Batik 并生成漂亮的SVG或PNG文件。容格有一个很好的设计和非常强大的布局算法…

    还有,既然你提到 “使用 在线服务 ,graphviz提供一个名为 webdot 绘制图形。

    这条线上还有其他人…例如 http://graph.gafol.net/ (好像不见了)

    客户端:

    • 尝试 http://arborjs.org/ 对于一个专门用于布局的最小(ish)库,您可以使用它来选择自己的渲染例程(div、canvas、svg、paper.js、processing…等)。

    • 我也喜欢 http://sigmajs.org/ 对于更完整的方法,内置触摸支持、插件、文件格式等。

        8
  •  2
  •   Big Rich    13 年前

    有趣的是,Eclipse项目有一个SWT/JFACS组件/框架,能够在纯Java中显示和生成(导入/导出)GoLVIEZ的“DOT”格式:

    ZEST (home page & download links)

    http://wiki.eclipse.org/Graphviz_DOT_as_a_DSL_for_Zest 用于示例。

    尽管Zest被吹捧为Eclipse插件,但似乎点操作API可以独立使用,也可以在Eclipse安装外部使用。

    干杯

    丰富的

        9
  •  2
  •   Seb    13 年前

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

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

        10
  •  1
  •   slim    16 年前

    JPGD 是Java中的GaveVIZ语法分析器。这是一个 小的 放弃了,但是代码很好而且清晰,如果你发现了错误,我相信作者会接受贡献的修复。

    虽然作为解析器进行了宣传,但它也是一个生成器。可以将图形构建为节点和边缘对象的集合,然后使用graph.toString()获取.dot。把它作为一个图形来获取,对于graphviz-dot可执行文件来说是一个简单的shell。

    或者,点很容易生成自己。在最简单的情况下,只需编写一个封装头文件即可。

    digraph myGraph {
    

    …然后每边定义一个边

    node1 -> node2 ;
    

    …后面是一个右大括号

    }
    
        11
  •  1
  •   Andreas Petersson    16 年前

    所以我对所有给定的答案和链接都视而不见,看起来 Prefuse / Flare 将由最佳选择。 它们具有非常吸引人的可视性,并且内置了对图形的支持。

        12
  •  0
  •   Brian    16 年前

    也许退房 Google Charts ?

        13
  •  0
  •   Edwin    16 年前

    您可以将SVG与Batik结合使用。我已经多次使用这个来显示图形。用Java 1.5的蜡染非常快。通过这个解决方案,您可以在Java中编程图形,而不依赖于Swing。您可以在需要的地方添加标签,将其作为servlet宿主,并将其显示为png或svg。

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

    在爪哇中,您可以构建SVG(= XML)文档。SVG图的示例可在以下位置找到: Directed graph 这里: Simple directed graph

        14
  •  0
  •   Community CDub    8 年前

    this question 尤其是史蒂芬关于使用前的回答。我听说你不需要交互性,但预先使用可能仍然有用。

        15
  •  -2
  •   Galwegian    16 年前

    我可以全心全意推荐 flot -太棒了!

    examples here .

        16
  •  -2
  •   Drew    16 年前

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

    JFreechart有很好的散点图、条形图和折线图,还有一些有趣的图表,比如派和刻度盘,所以它可能对你有用。