如何在Javascript中演示多重图?

如何在Javascript中演示多重图?,javascript,jquery,html,graph-theory,Javascript,Jquery,Html,Graph Theory,这个问题正在寻找一种使用Javascript绘制多重图的实用且简单的方法 首先看看这个问题。这些库都不支持(或伪图)。我的意思是我不能生成这样的图: 是否有任何jQuery插件(或javascript库)用于此目的 我想我可以使用它的图像,比如: 但它有很多问题: 我无法以交互方式移动节点或添加或删除边 每月只有2000个API调用。还不够 我不能生成大的或中间的图形 他们真的很丑 如果您知道一些javascript库,可以用来绘制多图,或者生成这样的图(类似于但具有绘制多图的能力)

这个问题正在寻找一种使用Javascript绘制多重图的实用且简单的方法

首先看看这个问题。这些库都不支持(或伪图)。我的意思是我不能生成这样的图:

是否有任何jQuery插件(或javascript库)用于此目的

我想我可以使用它的图像,比如:

但它有很多问题:

  • 我无法以交互方式移动节点或添加或删除边

  • 每月只有2000个API调用。还不够

  • 我不能生成大的或中间的图形

  • 他们真的很丑


  • 如果您知道一些javascript库,可以用来绘制多图,或者生成这样的图(类似于但具有绘制多图的能力)。

    我最近使用Graphviz来绘制一些作者出版物之间的连接。 Graphviz是开源图形可视化软件。Graphviz布局程序以简单的文本语言对图形进行描述,并以有用的格式制作图表,如用于网页的图像和SVG,用于包含在其他文档中的PDF或Postscript;或显示在交互式图形浏览器中

    例如,我使用一个简单的点文件来编写作者之间的所有连接,并生成了一个PNG文件

    这里有您需要的所有文档,在gallery部分您可以看到许多输出示例


    希望它能有所帮助。

    最好的办法是在服务器上渲染它们(或将其用作小程序)。

    我很惊讶您必须自己进行一些开发。Raphael.js在创建和操作svg方面非常有能力-这将是一个很好的起点

    如果允许您使用
    谷歌图表API
    ,您可以参考以下内容

    例如:


    一些图形可视化库(在问题中提到)确实支持多图,并允许拖动/放置节点

    jsplumb:

    可能支持多重图

    但就你的问题而言

    它真的很丑


    这些可能不符合你的审美观

    我认为paper.js()也会让你非常接近。

    你可能想看看这个:


    您必须自己做很多事情(制作自己的SVG等等),但是这个库非常强大

    Cytoscape.JS支持多图,是纯Javascript,并使用新的HTML 5画布来提高性能。其设计意图是通用图形可视化/操作


    在商业场景中,请看:

    它可以轻松地支持多个图形,而且看起来不会太难看,我相信:

    (这些图形已自动布局,也可以手动放置。)

    当然,这是一个品味的问题,所以如果你不喜欢这个外观,你可以改变可视化的任何方面,比如

    API提供了完整的交互式编辑功能,是一个纯客户端解决方案,当然没有API调用计数限制

    大型图仍然是当今Javascript引擎的一个问题,但前提是“大型”意味着超过数千个元素。通过虚拟化(仅考虑渲染期间视口中当前可见的内容),您可以使用数千个元素获得良好的性能

    免责声明:我为创建图书馆的公司工作,在SO/SE上,但我不代表我的雇主。我的帖子和评论是我自己的。

    你可以查看jsnetworkx()


    它是python图形库的js版本,支持多图形。它有一个
    draw
    函数,可以使用D3.js可视化图形。它可用于浏览器和node.js。

    我想要一个“javascipt”库。。。JGraphT是一个Java库,我知道,但是没有javascript库。正如您已经指出的,您可能只想使用Wolfram API来输出图像,这可能是一个可行的解决方案。我不知道为什么我坚持不使用flash或小程序。。。现在我正在研究@Konstantin的解决方案,并自己开发。当然,在完成开发之后,我会让它完全开源。无论如何谢谢。谢谢,但我希望通过用户输入在我的网页中生成图形。@parashant bhate:很好的建议。它也支持多重图。如果我能让它更具互动性,那就太完美了。类似于单击节点以删除它们,或通过单击节点移动节点或删除边。再次感谢你确定你需要用javascript制作它们吗?是的,这是一个关于数学的网站所需要的,我想从用户输入的数据以交互方式生成多重图形。也许会有帮助。记录在案,问题中列出的许多库确实支持多重图,至少现在是这样。