d3 力定向图中的缩放和刷动

2024-01-27

我在执行缩放时让 D3 执行正确的刷牙时遇到问题。

我在这里创建了一个 jsFiddlehttp://jsfiddle.net/Gwp25/2/ http://jsfiddle.net/Gwp25/2/用我在其他地方找到的一些虚拟数据显示网络。接下来的操作是这样的。放大(使用鼠标滚轮),然后打开画笔。完成此操作后,刷节点。选定的节点已关闭 - 一些节点超出了画笔区域。这是处理画笔范围内节点选择的代码的相关部分。

            .on("brush", function() {
                var extent = d3.event.target.extent();
                console.log(extent);
                d3.selectAll(".node").select("circle").classed("selected", function(d) {
                    return d.selected = (extent[0][0] <= x_scale(d.x) && x_scale(d.x) < extent[1][0]
                            && extent[0][1] <= d3.tran(d.y) && y_scale(d.y) < extent[1][1]);
                });
            })

有谁有办法解决这个问题。我知道这与节点及其原​​始位置和 x 有关,但我不太确定如何获取节点 x 和 y 相对于其缩放位置的信息。

有任何想法吗?


我相信我有您正在寻找的工作版本:http://jsfiddle.net/Gwp25/8/ http://jsfiddle.net/Gwp25/8/

你已经接近实施了。我将解释我更改了什么以使其发挥作用。

首先,我将秤附加到zoom功能。这很重要,因为 d3 会在您放大和缩小时自动更新它们。需要注意的是,我没有使用您的身份量表。如果您使用身份比例 d3 缩放行为将不会更新比例。以下是我创建的比例,在没有缩放时与您的比例相同:

var x_scale = d3.scale.linear().domain([0, chartWidth]).range([0, chartWidth]);
var y_scale = d3.scale.linear().domain([0, chartHeight]).range([0, chartHeight]);

Now the brush也将尺度作为参数。这是您错误地放置原始身份尺度的地方。因此,即使图表被缩放和平移,您也使用相同的比例将点映射到新缩放的图表。

为了养活brush正确的比例,您可以通过调用以下方式访问缩放行为的比例:zoom.x() or zoom.y().

一旦你完成了这个,剩下的就是肉汁了。

注意:我对代码进行了一些修改,以便我可以访问您的缩放功能toggleBrushing使其成为全局变量。我不建议保持这种方式,但我不想进行大量重构。祝你好运,希望有帮助!

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

d3 力定向图中的缩放和刷动 的相关文章

随机推荐

  • HTML 下拉菜单自动宽度调整

    我创建了一个下拉菜单 该下拉菜单存在根据所选内容调整大小的问题 我使用以下 stackoverflow 答案作为调整下拉列表大小的灵感 https stackoverflow com a 20091985 3166468 https sta
  • cordova 无法看到 Android 目标

    我尝试为 Android 平台设置 Ionic Cordova 我安装了 JDK Android SDK 等 但正在运行cordova requirements给我 Requirements check results for androi
  • 在拖动时选择编辑文本中的一些文本

    我想在编辑文本中选择一些文本 但我不知道该怎么做 我需要这样的方法 当用户触摸屏幕然后拖动并离开屏幕时 拖动的文本将被选择 我的英语很差 所以不要介意 谢谢 textView EditText findViewById R id textv
  • PHP,从日期获取明天的日期

    我有一个 PHP 日期 格式为2013 01 22我想以相同的格式获取明天的日期 例如2013 01 23 这怎么可能用 PHP 实现呢 Use DateTime http php net manual en book datetime p
  • .Net毛伊岛如何连接

    对不起 我的英语不好 如何将 SQL Server 与 Net Maui 连接 我在网上尝试了很多方法 但都失败了 我尝试导入 Ado net 但显示错误 错误显示 该项目的目标框架不包含实体框架运行时汇编 首先 您应该配置应用程序常量 配
  • 从 CDN 包中删除 Babel(StandAlone) 警告消息

    我们在项目的某些部分使用 React JS CDN 出于质量目的 我们希望向客户提供无警告的代码 我们正在使用以下库 问题是我们在控制台中收到以下警告消息 您
  • 现在还值得学习微软基础课程(MFC)吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我是微软技术的忠实粉丝 学习了很多 NET Framework 和 C 之类的编程语言 但我相信 NET 应用程序是在 NET Framewor
  • 调整 NSMutableAttributedString 的字体大小与 UILabel 的框架高度成比例

    在我的项目中 我使用迅捷3 0 现在我正在使用以下课程 UILabel 子类 根据 UILabel 框架高度调整字体大小 当 UILabel 框架发生更改时 layoutSubviews 会重新计算比例字体大小 class Label UI
  • 如何查看AWS ELB后面运行的SSH服务器的SSH客户端的真实IP

    我们在 AWS classic ELB 后面运行两个 gitlab 实例 为了启用 git SSH 推送并通过 git 负载平衡 SSH 请求 我们在 AWS ELB 中添加了 SSH TCP 端口侦听器 在 SSH 日志中 我们看到 EL
  • 创建热图时出错 - 外部函数调用中的 NA/NaN/Inf (arg 11)

    我正在尝试为我的数据准备热图 但我不知道为什么会出现此错误 My data gt dput head tbl ready structure c 0 0 0 0 0 0 0 0 0 0 0 0 0 0 370330677123077 0 0
  • Firebase Cloud Messaging (FCM) 如何切换 Apple 推送通知服务 (APN) 的环境?

    在 Apple 推送通知服务 APN 中 服务器端开发人员必须选择环境类型 沙箱或生产 作为 HTTP 2 URL api sandbox push apple com 或 api push apple com 1 https develo
  • jquery fullcalendar 事件过滤

    有没有什么方法可以在全日历中动态过滤客户端事件 当我从服务器 json encoded 获取事件时 我将自己的参数 school id 分配给每个事件 fullcalendar 准备好后 我想用 select 动态过滤事件 我在页面上添加
  • 升级 SonarQube 问题

    我在安装实例时遇到问题SonarQube4 4至5 1 The 指示 http docs sonarqube org display SONAR Upgrading比如说停止 SonarQube 服务器 匹配几个文件 备份数据库 复制插件等
  • React Hooks:在 Socket.io 处理程序内部调用时状态未更新

    const questionIndex setQuestionIndex useState 0 socket on next gt console log hey setQuestionIndex questionIndex 1 useEf
  • 使用 ptrace 解析 Call 和 Ret。

    我尝试使用 ptrace 解析可执行文件中的所有 Calls 和 Rets 符合x64操作码 http ref x86asm net coder64 html 我找到了操作码呼叫 0xe8并为重试 0xc3 0xc2 0xca 0xcb 自
  • Slurm 多处理 Python 作业

    我有一个 4 节点 Slurm 集群 每个节点有 6 个核心 我想提交一个利用多重处理的测试 Python 脚本 它会生成打印正在运行的节点的主机名的进程 如下所示 def print something print gethostname
  • 仅限水平滚动!

    我有一个包含水平菜单的菜单 菜单由无序列表组成 我希望每当菜单超出宽度时 div 都会获得水平滚动条 div 我尝试使用这些 CSS 定义 div position absolute width 380px overflow auto ov
  • 输入“用户|未定义”不可分配给类型“用户”

    用户控制器 import User from user export class UserController public static async getuser ctx BaseContext const userRepository
  • Safari 中的 CSS 过渡变换 z-index 冲突(适用于 Chrome / FF)

    我正在尝试使用 CSS 过渡和旋转效果来显示名片 我在 Chrome 和 FF 中一切正常 但在 Safari 中它扭曲了 div 我尝试应用以下属性但无济于事 transform translateZ 0px transform styl
  • d3 力定向图中的缩放和刷动

    我在执行缩放时让 D3 执行正确的刷牙时遇到问题 我在这里创建了一个 jsFiddlehttp jsfiddle net Gwp25 2 http jsfiddle net Gwp25 2 用我在其他地方找到的一些虚拟数据显示网络 接下来的