使用 d3.js 在强制布局中添加和删除节点时出现问题

2023-11-30

我试图通过从 Zabbix API 获取数据来可视化服务器可用性(以及随后的其他事情,一旦可行)。您可以在 Zabbix API 文档中的 [此处][1] 中查看有关返回数据的示例。

获取数据不是问题,但我认为 d3.js 的数据连接遇到了一些问题,或者更确切地说我应该如何做到这一点。

获取数据后,我得到一组按字母顺序排序的服务器,我希望新的服务器出现,删除的服务器消失,可用性的任何变化(或其他 - 未来)以颜色或其他任何我想要的方式反映出来。可能会想到。

要点是图不应该重新初始化,它应该只是通过添加或删除节点来更新。

这是我遇到问题的一点。我已经设法将越来越多的节点添加到列表中(从不清除它),我已经设法让它们在每次获取新数据时“重绘”,即再次添加所有节点,并像它们一样捕捉到中心首先在加载页面时执行。

第三个导致所有节点都卡在左上角。

后者是我的代码的当前状态。

我现在有点不确定我做错了什么,我正在看this这似乎与我需要的相当接近,无论如何都没有链接(目前)。这工作得很好,我试图在我的代码中复制这种行为,但它不起作用。

如果有人给我一些指示,我将不胜感激,那就太好了。过去一周我在工作中一直在玩这个,但没有进一步:)

Thanks!

因为我只能在工作中访问 Zabbix,所以我实际上只能在 CET 时间 16-21 时间段内进行测试,即今天大约还有 4~ 个小时。如果有人在晚上有任何建议,我明天会尝试一下:D

我在 GitHub 上的代码将位于我的帖子下方的链接中,因为该网站缺乏声誉使我陷入了一个灰暗的困境,我只能在我的帖子中添加两个链接。

为什么这不是全球性的?我在其他 SE 网站上有超过 10 个代表。

Edit:

仍然有问题,每次刷新数据时,圆圈都会“输入”,就像您第一次加载时一样:http://mbostock.github.com/d3/talk/20111018/collision.html不知道现在该怎么办:/


你在那里提到的是D3的默认行为。添加节点时,它们将被插入到左上角。您可以通过编写自己的放置方法并在将每个节点添加到力定向图时直接设置每个节点的 X 和 Y 来更改此行为。

诀窍是应用这个算法:

1)计算视口的限制(例如绘图区域的限制 - 20)并使用力定向绑定示例中的技巧(http://bl.ocks.org/1129492 )

2) 然后对于每个可视化勾选执行以下操作:计算将节点保持在视口中的力

3)将节点保留在视口中的算法如下: 对于每个节点,根据可以施加在 4 个方向(左上、左下、右上、右下)上的力计算 X 和 Y - 如果它更接近左上,那么您将相应地设置 X 和 Y... .无论如何,它不会在屏幕之外......

另一个技巧是在中心设置根节点(请参阅这篇文章:如何在 D3.js 力定向图中设置焦点节点?)。这将有助于稳定你的图表。另一个建议是尽量不要将 ajax 调用与重绘混合在一起。理想情况下,使用一些回调并在加载数据时调用重绘,否则您最终将得到意大利面条式代码(强制定向图大于 1000 行的情况并不罕见)。

希望能帮助到你。

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

使用 d3.js 在强制布局中添加和删除节点时出现问题 的相关文章

  • 内容脚本中的 Firefox SDK 访问首选项

    About 我正在使用 Firefox Add on SDK 开发 Firefox Add on 该附加组件将是特定于站点的 并将根据用户偏好隐藏某些元素 几年前我已经制作了这个附加组件 但使用新的 SDK 后 事情的工作方式有点不同 Co
  • 如何从字符串中删除除字母、数字、空格、感叹号和问号之外的所有内容?

    如何删除除以下内容之外的所有内容 字符串中的字母 数字 空格 感叹号 问号 该方法支持国际语言 UTF 8 非常重要 您可以使用正则表达式 myString replace w s g 这将替换除单词字符 空格 感叹号或问题之外的所有内容
  • 在 D3 中在外部加载的 svg 图形上绘图

    我已经从 svg 文件加载了外部图形 我想尝试在其上绘图 但不知道如何操作 我的简单 d3 代码在这里
  • 我是否需要关心异步 Javascript 的竞争条件?

    假设我加载了一些我知道在将来某个时候会调用的 Flash 影片window flashReady并将设置window flashReadyTriggered true 现在我有一个代码块 我想在闪存准备好时执行它 我希望它立即执行 如果wi
  • 如何以 JavaScript 编程方式获取旋转的 svg 文本边界

    我正在动态渲染 SVG 图像并创建旋转文本 如果旋转的文本与其他文本重叠 我需要删除该文本 但我无法测量旋转的文本来创建边界并检查下一个标签文本区域 我创建了 3 个 SVG 元素来解释 SVG 1 显示重叠的文本 SVG 2 显示重叠的旋
  • 从平面数组创建嵌套对象

    我目前有一个对象数组 我正在尝试将其重塑为嵌套对象ID作为对象键 并将其作为目标ID与parentid 如果不是 0 我尝试了几种方法 但我很挣扎 主要绊脚石for me是超过一两层深度的任何东西 理想情况下 我需要它是动态的 这样它就可以
  • 访问 .js 文件中的 Nuxt 插件

    假设我有一个脚本文件 foo js function doStuff how to access store and other plugins here export default doStuff 如果不将调用组件作为参数传递 我如何访
  • 如何抑制 IE9 window.close() 确认消息

    应用 window close 函数后 IE9 会引发 您正在查看的网页正在尝试关闭 消息 有没有办法在不更改应用程序代码的情况下 而是通过更改一些特定于 IE 的注册表项来抑制此消息 如果窗口不是由脚本打开的 IE 不允许在没有确认的情况
  • 显示来自 mongodb 的所有数据并在 doT.js 模板引擎中渲染它

    我想从 mongodb 中提取数据并将其传递给视图 一切似乎都正常 但我没有看到所有 10000 条记录都显示出来 而是只看到了一条 我觉得我非常接近解决它 但我陷入困境 我正在使用node mongodb native express和d
  • HTML5 游戏到本机应用程序 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在用 HTML5 制作游戏 我最熟悉 HTML5 并且比 C 等更高级的语言更喜欢它 HTML5
  • 如何隐藏 URL 中的 ID

    我以前在 Stack Overflow 上见过这类问题 但没有一个真正有帮助 我也用谷歌搜索过 但没有骰子 我想知道如果用户单击选项卡本身是否可以隐藏 URL 中的 ID 这是网页 www planet nu dev new experia
  • ES6 生成器——它们真的是 async/await 的替代品吗?

    评论区的帖子之一this http blogs msdn com b typescript archive 2014 10 22 typescript and the road to 2 0 aspx打字稿博客文章说 如果我必须等到 2 0
  • 从 json 文件加入时添加角色 (autorole)

    我对 JS 相当陌生 为了学习 我决定为 Discord 制作一个机器人 我学到了很多并且正在继续学习 我有一个 autorole 的想法 我知道传统的做法 bot on guildMemberAdd member gt var role
  • 如何禁用向左滚动?

    I got a div 元素 parent 包含多个子元素 item 我想启用滚动父元素一个方向 left OR正确的 否则什么都不会发生 看我的代码 parent scroll function gt gt gt scroll event
  • 使用 jQuery animate 时,有没有办法隐藏 webkit 浏览器中显示的工件?

    我正在使用 jQuery animate 在网页上的项目中滑动 由于某种原因 只有在 webkit 浏览器中 元素动画的空间中才会出现伪影痕迹 有没有办法阻止或隐藏这种情况 一旦您加载此处的页面 它们就会出现在轮播上 http www my
  • Javascript 警报/消息框中的欧元符号或其他实体

    有谁知道我如何在 javascript 警报窗口中显示欧元或其他 html 实体 alert u20AC HTML 实体字符查找 http leftlogic com lounge articles entity lookup
  • 如何使用 javascript 禁用组合键?

    I would like to disable view source shortcut key for IE using JavaScript To disable Ctrl C I am using the following func
  • NodeJS 错误堆栈未定义 [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我正在使用节点检查器 我注意到new Error 有未定义的堆栈 如果我将此值分配给一个变量 该变量将显示堆栈未定义 有趣的是 跑步new
  • 如何在画布中旋转图表同时保持数字垂直?

    我正在尝试围绕其中心旋转画布中的图表 同时保持字母直立 我正在尝试使用 ctx rotate 但它使用画布的左侧作为中心来旋转整个图表 以下链接提供了视觉效果 我希望它看起来像绿色 而不是红色 就像我的代码当前所做的那样 视觉解释 http
  • 将数组数组的字符串转换为 Javascript 数组数组的优雅方法?

    我有一个 ajax 请求 它返回一个值列表 如下所示 5 5 5 6 15 15 7 13 12 我需要它是一个带有数字的 javascript 数组 5 5 5 6 15 15 7 13 12 我尝试将 和 替换为 然后用 分割和 for

随机推荐

  • hive 中的 regexp_extract 给出错误

    我的表中有一些数据 例如 id params 123 utm content doit utm source direct 234 utm content polo utm source AndroidNew 使用 regexp extra
  • Visual Studio 新项目“确定”按钮呈灰色

    我认为这只是意味着我缺少依赖项 但我无法创建任何类型的项目 控制台应用程序 Web 应用程序 Windows 窗体等 我运行的是 VS 2012 premium 您可能正在尝试将项目保存到您没有写入权限的目录位置 它可能是某处的网络驱动器
  • MATLAB - 编译 jpeg_read.c 创建 mexmaci64 文件时出错[重复]

    这个问题在这里已经有答案了 最近 我将 Matlab 项目从 Windows 操作系统转移到了 Mac 操作系统 所以我的 jpeg read mexw64 文件不再工作 我需要创建一个与 Mac OS 兼容的新 mexmaci64 文件
  • 显示应用程序端点的照片

    这是我的问题 我在一个大型 UCMA 项目上工作了 3 个月 现在我想添加一个小功能 我有很多可以动态添加 修改或删除的 ApplicationEndpoint 我希望每次创建 ApplicationEndpoint 时都指定将在 Micr
  • 位图、Bitmap.recycle()、弱引用和垃圾回收

    据我所知 在 Android 上 建议将 Bitmap 对象作为 WeakReferences 引用 以避免内存泄漏 当位图对象不再保留硬引用时 垃圾收集器将自动收集它 现在 如果我理解正确的话 必须始终调用 Bitmap recycle
  • C++ SDL 的作用是什么?做?

    screen SDL SetVideoMode 1000 1000 32 SDL HWSURFACE SDL FULLSCREEN 什么是 do in SDL HWSURFACE SDL FULLSCREEN 我尝试谷歌搜索 但谷歌不接受特
  • 画布渐变表现

    我目前正在使用画布编写一个小游戏 对于游戏 我需要某种雾来隐藏地图的大部分 并且只有玩家周围的一小部分区域应该可见 为此 我使用第二个画布覆盖游戏发生的画布 并用渐变填充它 从透明到黑色 function drawFog fogc clea
  • 连接到 firestore 模拟器时 Python firebase_admin 挂起

    我无法从 python 连接到 firestore 模拟器 连接并写入文档到真实项目工作正常 但是在设置环境时 设置函数永远不会解析变量 FIRESTORE EMULATOR HOST 代码 os environ FIRESTORE EMU
  • 如何在 Python OpenCV 中保存视频

    我已经使用 CV2 打开了一个视频 使用进行了一些更改cv2 rectangle 现在 当我这样做时cv2 imshow frame frame 它会播放视频 相反 我想以原始大小和帧速率将视频保存在某处 您可以逐帧保存视频 基于文档上的示
  • 返回在 javascript 对象中找不到的键的默认值

    当调用不在对象中的键时 将返回 undefined 我想返回一个我指定的字符串而不是未定义的字符串 例如 let obj key1 key1 let res obj key2 console log res I want console l
  • 如何在 Angularjs 中创建过滤器?

    我有这个课程集合 id 1 courseId 2 text John id 2 courseId 2 text Willi id 3 courseId 2 text Inga id 4 courseId 1 text Jerry id 5
  • 如何用 VI/VIM 编辑器中每次出现的不同单词替换查找单词?

    例如 我有一个文本 10 3 4 2 10 4 10 不 我想用不同的单词更改每 10 个 我知道 s 10 replace words gc 但它只让我像 yes no 一样进行交互式替换 但我想用不同的单词来更改 10 的每次出现 例如
  • 具有背景颜色的粗体文本样式的 Excel 行的 Java 代码

    我用谷歌搜索了一些代码并找到了一些答案 但无法以粗体形式获取 Excel 文件输出并设置背景颜色 我尝试过以下代码 你能告诉我哪里错了吗 请看一下 谢谢 仅供参考 我将用蓝色或任何浅色以粗体显示第一行 背景 如果你知道请帮忙看一下代码 Ex
  • 为什么在子类化 tf.keras 层(或模型)类时实现“call”方法使层(模型)对象可调用?

    当编写自定义的 tf keras 层时 我们必须实现 call 方法 因为只有 如果对象具有有效的 则可以像使用 的函数一样调用类的对象 call 方法 虽然我没有找到类似的东西 class tf keras model def call
  • Chrome 忽略从 WebAPI 控制器发送的 HttpResponse 的 Content-Disposition 标头中建议的扩展名

    我正在尝试编写一个 WebAPI 控制器 它可以动态生成 W indows 快捷方式文件 lnk 并将其发送回客户端 但即使我在 Content Disposition 标头中指定 lnk 作为扩展名构建响应时 Chrome 仍会在 另存为
  • Spring Boot yaml 文件中数字类型的 @Value

    I got a data yml在以下结构的资源文件夹中 main header info 3600L 我使用Spring Boot版本2 4 2 我想注入属性main header1 info对于一个字段 我按以下方式执行此操作 Comp
  • 如何查找包含 的存储过程?

    我需要在 SQL Server 2008 中搜索存储过程 其中可能包含 数据库字段的名称或变量名称 SELECT ROUTINE NAME ROUTINE DEFINITION FROM INFORMATION SCHEMA ROUTINE
  • IE浏览器中的JQuery选择框焦点问题

    下面的 input 与标签匹配 该代码在所有浏览器中都可以正常工作 除了在 Internet Explorer 中 我需要单击选择框两次才能获得下拉列表 input focus function var rc this parents rc
  • 如何将密钥信息保留在 Git 存储库之外

    我的存储库中有一些文件 其中一个包含 Adafruit 秘密密钥 我想使用 Git 来存储我的存储库 但我不想发布密钥 保守秘密的最佳方法是什么 而不必每次提交和推动某件事时都将其清空 根据您想要实现的目标 您可以选择以下方法之一 将文件保
  • 使用 d3.js 在强制布局中添加和删除节点时出现问题

    我试图通过从 Zabbix API 获取数据来可视化服务器可用性 以及随后的其他事情 一旦可行 您可以在 Zabbix API 文档中的 此处 1 中查看有关返回数据的示例 获取数据不是问题 但我认为 d3 js 的数据连接遇到了一些问题