静态 D3 力导向图性能

2024-02-26

所以目前我正在尝试创建一个包含数千个节点和图中大约 30k 个链接的力导向图。正如您可能猜到的,模拟速度非常非常慢。我想做的是预先计算节点的所有位置并仅渲染静态(但交互式)图表。有没有办法使用 d3.js 计算力定向图而不渲染它(使其更快),然后只根据预先计算的值渲染静态图?我的代码目前基于 Mike Bostock 的example. http://bl.ocks.org/4062045


d3 用于力定向图形布局的方法是标准的排斥力和吸引力模型,您可以在维基百科上找到伪代码(http://en.wikipedia.org/wiki/Force-based_algorithms_%28graph_drawing%29#Pseudocode)或者查看 d3 源代码本身(https://github.com/mbostock/d3/blob/master/src/layout/force.js)。

该算法每个刻度(或时间片)的复杂度为 O(n^2),大约需要 n 个刻度才能达到平衡,因此整个布局过程为 O(n^3) (http://www.ecs.umass .edu/ece/labs/vlsicad/ece665/presentations/Force-Directed-Adel.ppt)。对于数千个节点来说这是不切实际的。


要尝试回答您的具体问题,只需在 SVG 容器元素上使用 CSS、display: none 即可。一旦初始模拟“最终”完成,您就可以获取 SVG 元素的 HTML 源代码,并将其用作静态但交互式表示的基础。 (一旦你有了所有元素的 html,你只需在它们上添加鼠标悬停事件即可让它们显示其详细信息。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

静态 D3 力导向图性能 的相关文章

随机推荐

  • 安装 MySQL-python

    我在尝试在我的 Ubuntu Linux Box 上安装 MySQL python 时遇到以下失败 从下面来看 问题似乎是sh mysql config not found有人可以建议我该怎么做吗 rmicro ubuntu pip ins
  • CSS 类定义在 元素内不起作用

    你们能告诉我为什么 css 类定义在下面的示例中不起作用吗 我正在使用 GWT 2 4 Chrome 17
  • 历史推送状态和滚动位置

    当用户使用 HTML5 popstate 处理程序导航回浏览器历史记录时 我尝试检索滚动位置 这是我所拥有的 document ready function window on popstate PopStateHandler link c
  • 是否可以像来自用户一样向 Bot Framework 发送消息?

    我正在使用 Direct Line 3 0 和 Microsoft Bot Framework 并要求网页将一些表单字段发送到机器人 就像用户发送它们一样 例如 当用户按下 提交 时 电子邮件 电话等字段将被发送到机器人 就像用户这样发送它
  • 获取精灵部分偏移量

    我正在尝试获取 elf 文件每个部分的偏移量和数据 我已经有了包含以下代码的部分名称 include
  • Python - 保存在 GNU Nano 2.2.4 中编辑的文件[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我对编程 使用 Raspberry
  • 调试 Outlook 插件桌面

    我目前正在使用 yeoman 和生成器办公室为 Outlook 开发一个插件 以将电子邮件及其附件保存到另一项服务 Outlook 版本 MS Office Professional Plus 2016 v 16 0 48 49 1000
  • 提交表单时,表单 onSubmit 函数不会触发

    我看过了 找不到任何像我的问题一样的东西 我有一个表格无法进行验证 我知道 JavaScript 文件正在加载 因为页面上的其他功能正在正常工作 我的代码如下
  • 在 Swift 3 中以编程方式使用 ScrollView

    我搜索了其他问题 似乎在 swift 3 中使用自动布局以编程方式创建滚动视图时仍然遇到一些问题 我能够让我的滚动视图显示如下图所示 但是当我滚动到底部时 我的其他标签却出现了问题不显示 滚动顶部 标签也不会消失 希望有人可以帮助查看我下面
  • 将类添加到表单字段 Django ModelForm

    我正在尝试使用 Django ModelForm 编写 Bootstrap 表单 我已阅读 Django 文档有关表单的 Django 文档 https docs djangoproject com en dev topics forms
  • Android Retrofit 2,用于编辑响应的 addInterceptor 和 addNetworkInterceptor 之间的差异

    我一直在尝试实现一个拦截器 OkHttp 3 2 和改造 2 用于在作为响应返回之前编辑 JSON 响应 我们请求数据的服务器根据成功或错误返回不同的数据 这使得映射对象变得困难 我试图通过将拦截器添加到 Retrofit 作为 Netwo
  • 去哪一个; Yii 或 Symfony

    好的 我是NOT询问哪一个更好 我知道 Yii 并不比 Symfony 好 Symfony 也不比 Yii 好 我想问的是我应该选择哪一个呢 我想提出几点 我有一个大型项目 格式非常好 编码也非常好 如果您看到我的代码 您会认为我制作了自己
  • Java Process无法通过Runtime.getRunTime().exec()获取InputStream

    try String str Process process Runtime getRuntime exec bash home abhishek workspace Pro run InputStream isout process ge
  • 动态加载程序集中的强类型 Razor 视图不会在运行时编译

    我在程序集中有一个 MVC3 区域动态加载与MEF 如果我使用具有强类型视图的 Webforms 视图引擎 一切都会正常工作 如果我将 Razor 视图引擎与dynamic模型 效果也很好 但如果我使用强类型 Razor 视图 视图编译在运
  • 在类上覆盖 dict()

    我正在尝试做一个dict 类似 Python 中的类 当你创建一个类时 你有某些方法告诉Python如何创建一个内置类 例如 覆盖 int 方法告诉 Python 如果用户使用则返回什么int 在类的一个实例上 同样适用于 float 您甚
  • redux 形式的多个复选框

    我想问一下 场景是这样的 我有多个复选框 但我的问题是每当我勾选一个复选框时 所有 4 个复选框都会被选中 还有为什么复选框的值只是 true 或 false 这是我的复选框 div div
  • 如何让 Visual Studio 自动获取传入提交

    因此 当在 MSVS 中使用 Git 时 您可以使用 Fetch 来查看正在等待您的传入提交 有没有办法将其设置为自动发生 或者我每次想到它时都被迫单击 获取 我有一个不同但接近的需求 我在一个大项目中使用了 git tf git tf f
  • 我需要释放 C 中 strerror() 的结果吗?

    据我了解 strerror errno 返回对应错误的字符串形式errno 那么 当我使用完函数后 是否需要释放函数的返回结果呢 你不仅不need to you must not 你唯一可以传递的东西free是指向您获得的内存的指针mall
  • ASP.NET Core 3.1 Azure AD 身份验证抛出 OptionsValidationException

    我正在尝试使用 Azure Active Directory 处理 Web 应用程序上的身份验证 然而 当我尝试用AuthorizeAttribute https learn microsoft com en us dotnet api m
  • 静态 D3 力导向图性能

    所以目前我正在尝试创建一个包含数千个节点和图中大约 30k 个链接的力导向图 正如您可能猜到的 模拟速度非常非常慢 我想做的是预先计算节点的所有位置并仅渲染静态 但交互式 图表 有没有办法使用 d3 js 计算力定向图而不渲染它 使其更快