d3.js 家庭树配偶亮点

2024-01-14

代码链接:http://jsfiddle.net/mj58659094/yKUsQ/ http://jsfiddle.net/mj58659094/yKUsQ/;

当单击一个人(节点)时,它也会选择配偶。我只想选择(突出显示)我点击的人(丈夫或妻子或孩子)。 (当我检查 FireBug 中的 html 时,配偶节点(g transform="translate(0,70)")位于人员节点内部。我认为它们应该位于外部,但位于 g class="node" 组内)。我不知道如何解决这个问题。任何人,请帮忙。谢谢。


更新:在下面编辑

我认为你是对的,解决你的问题的最好方法是onclick问题是如何将一个人的配偶保留在与该人相同的组中(而不是嵌套组中)。除此之外,我认为您正在应用onclick在错误的地方。我的建议是

  1. 将第 325-330 行更改为以下内容

    var node = g.append("svg:g").attr("class", "node")
        .selectAll("g")
        .data(function (d) { return d.nodes; })
        .enter().append("svg:g");
    
    node.append("svg:rect")
        .on("click", clickedNode);
    

    目前,您正在应用onclick到包含的组both该人及其配偶,而您想使用onclick分别针对每个人/配偶。请注意,一旦进行此更改,您将需要更新代码以测试每个节点的rect(而不是节点的组g)是否被选择(第355-365行)。您还必须更新 CSS 样式.node rect.normal and .node rect.selectedCSS 文件的第 25 行和第 29 行。

  2. 第二个问题是您只为每个人绘制第一任配偶。目前updateSpouses函数正在迭代每个人,然后为第一个配偶添加一个带有矩形的组。您需要做的是首先为每个有配偶的人添加一个组,然后在每个人的配偶上添加一个组。这是如何修改的粗略草案updateSpouses让您开始:

    var node = svgTree.selectAll(".node g")
      .append("svg:g").attr("transform", function (d, i) {
         if (i == d3.familyTree.rootGeneration)
           return "translate(" + (d.spouseX) + "," + (d3.familyTree.gapBetweenSpouses) + ")";
         else
           return "translate(" + 0 + "," + (d3.familyTree.gapBetweenSpouses) + ")";
       })
      .filter(function (d, i) { return personSpouses" in d });
    
    var spouses = node.selectAll(".spouse")
      .data(function(d){ return d.personSpouses }).enter()
      .append("rect")
      .on("click", clickedNode);
    

Edit

为了回应您的评论,我继续修改了您的原始代码http://jsfiddle.net/mdml/xJBXm/ http://jsfiddle.net/mdml/xJBXm/。以下是我所做更改的快速摘要:

  1. 我把每个人分成一个组,然后每个组都有自己的onclick属性(第 141-146 行),这样当您单击矩形/文本时clickedNode叫做。
  2. 我还将每组配偶放在一个组中(如上所述),以便每个配偶都可以单独单击(第 229-232 行)。
  3. 我修改了resetNodePersonSelected and setNodePersonSelected功能,以便他们搜索/更新配偶和孩子。

我已经在上面描述了高层的变化,但如果您对实施有任何其他问题,请告诉我。

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

d3.js 家庭树配偶亮点 的相关文章

  • 设置 D3 力定向图

    致尊敬的读者 我对 javascript 相当陌生 我也遇到过这个问题 我正在尝试实现这个力导向图的修改版本 http mbostock github com d3 ex force html http mbostock github co
  • D3.以编程方式缩放后使用鼠标滚轮时缩放会跳转

    当我通过单击鼠标缩放到特定位置然后尝试平移或使用鼠标滚轮时 缩放行为会跳跃 看来我的缩放级别正在恢复 就像单击鼠标之前一样 这是我的事件处理程序 function click d var x y k if d centered d var
  • 根据 D3 中的属性值对对象进行排序

    我有一系列在 D3 中使用的对象 例如 var cities city London country United Kingdom index 280 city Geneva country Switzerland index 259 ci
  • 如何让d3.js生成svg而不绘制它?

    有没有办法只生成 svg 并将其作为字符串获取 而不实际绘制它 我考虑过将 svg 渲染到隐藏的 div 然后读取内部 html 但是有没有更干净的方法 我认为你可以这样做 var svg d3 select body append svg
  • 处理重叠 SVG 图层中的鼠标事件

    我正在使用 d3 js 构建地图可视化 我正在为美国各州和县绘制填充多边形 县的 SVG 图层位于州图层下方 状态已填充 但填充不透明度设置为 0 我认为 需要填充来捕获点击事件 我想捕获州级的点击事件 但我想捕获县级的鼠标悬停事件 但是
  • 需要帮助从数组中为国家/地区着色,保留其余默认颜色

    我需要一些帮助从我创建的数组中获取数据 然后仅对数组中存在的国家 地区进行着色 而不在数组中的其余国家 地区我希望保留为默认颜色 我正在使用 D3 来完成所有这些工作 并且我非常确定我可以通过 D3 实现我需要的目标 但不确定如何实现 我想
  • D3、TS 和 Angular 2

    我正在尝试将 D3 v4 与 Angular 2 Typescript 一起使用 我目前正在研究 D3 v4 我能够遵循 stackoverflow 中类似问题的一些答案 但没有成功 我已经导入了大部分 D3 库及其类型 我使用的是 TS
  • 节点大小与 D3 中的子节点数量成正比

    我创建了这个点击 展开 折叠网络 http jsfiddle net 5Lv8gkqv http jsfiddle net 5Lv8gkqv var width 960 height 500 root name Chocolate tag
  • 使用 pandas“to_csv”防止尾随零

    我正在尝试将 CSV 字符串导出到 D3 Web 应用程序 但是命令to csv坚持在数据中添加尾随 0 这会妨碍 D3 的正确使用 这是一个说明问题的最小示例 我的 简化的 数据框是 gt gt gt df pd DataFrame Al
  • d3.js:将样式应用于单行

    正在尝试可拖动网络 http bl ocks org mbostock 4566102并希望能够对不同的链接使用不同的颜色 当我注释掉这些行时 var link svg append g attr class link selectAll
  • svg:如何在计算线上设置一个圆?

    我试图用 svg 在计算线上设置一个圆 这是我的例子 http jsfiddle net 7XC9j http jsfiddle net 7XC9j html
  • Clojure:如何生成“trie”?

    鉴于以下 def inTree 1 2 1 2 3 1 2 4 5 9 1 2 4 10 15 1 2 4 20 25 你如何将它转换成这个特里树 def outTrie 1 2 3 4 5 9 10 15 20 25 这是一个清理后的解决
  • 使用连续传递风格通过广度优先索引获取子树

    这个问题是后续问题如何通过索引获取子树 https stackoverflow com questions 65000785 how do i get a subtree by index 这个问题涉及深度优先索引 为此我提供了深度优先连续
  • 鼠标悬停时在折线图上画一条线?

    我正在使用 D3 js 构建折线图 当用户将鼠标悬停在图表上时 我想在图表上绘制一条垂直线 突出显示其与图表线的交点 并显示工具提示 如以下屏幕截图所示 我已经在这条路上走了一部分了 这是我在 JSFiddle 上的代码 http jsfi
  • 如何使用图形突出显示控件中的换行文本?

    我需要使用填充矩形突出显示控件中的特定字符 我可以使用以下命令获取文本未换行时的位置Graphics MeasureString 方法如下 var size g MeasureString tempSearchText style Font
  • 将数据从 Django 传递到 D3

    我正在尝试使用 Django 和 D3 js 编写一个非常基本的条形图 我有一个名为 play 的对象 其中包含一个名为 date 的日期时间字段 我想要做的是显示一段时间内按月分组的播放次数 基本上我有两个问题 如何将这些内容按月分组并统
  • 使用 O(1) 辅助空间迭代二叉树

    是否可以在 O 1 辅助空间中迭代二叉树 不使用堆栈 队列等 或者这已被证明是不可能的 如果可以的话 怎样才能做到呢 编辑 我得到的关于如果有指向父节点的指针就可能实现这一点的响应很有趣 我不知道可以做到这一点 但取决于您如何看待它 这可以
  • 项目展开时自动调整列大小

    在具有多列的树中 如何在展开 折叠和数据更新时调整列的大小以适应内容 类似的解决方案表格问题 https stackoverflow com questions 3186340 swt table auto resize all colum
  • 更改 c3.js 散点图中气泡的大小

    我有一个散点图 我想改变点的大小 使它们看起来像气泡 有人可以告诉我如何改变气泡的大小吗 这是我的代码 var chart c3 generate data xs IBM ibm x Microsoft microsoft x column
  • 是否可以将 SVG 对象的自定义属性设置为数字而不是字符串?

    我正在为 SVG G 元素 SVG 组对象 分配人工属性 我通过 SVG 转换移动该组及其内容 并将该组的 x y 坐标及其宽度 高度存储在这些属性中 我正在使用 D3 Javascript 库和调用 embeddedElemContain

随机推荐

  • 通过布尔掩码数组选择 numpy 数组的元素

    我有一个布尔掩码数组a长度n a np array True True True False False 我有一个二维数组n列 b np array 1 2 3 4 5 1 2 3 4 5 例如 我想要一个仅包含 True 值的新数组 c
  • C#进程启动焦点问题

    当我开始一个新进程时 它会自动获得焦点 如何防止它获得焦点或将焦点返回到我的应用程序 这是我正在使用的代码 string path c temp myprocess exe ProcessStartInfo info new Process
  • React、Jest 和 Material-UI:如何测试在模式或弹出窗口中呈现的内容

    有一些 Material ui 组件不会将其结果渲染到与其父组件放置的位置相同的位置 其中我们有Dialog Menu etc 这显然使得在安装了某些父组件的 jest js 包装器中测试其内容是否存在是不可能的 例如给定以下组件 clas
  • 如何动态设置膨胀线性布局中的边距?

    我添加了一个linearlayout in a linearlayout动态地使用此代码 LinearLayout root LinearLayout findViewById R id root View child inflater i
  • 停止页面加载时自动运行 ASP 脚本

    我这里遇到问题了 我创建了一个用于将记录添加到数据库中的页面 它工作正常 但是每次加载页面时都会运行 asp 脚本 每次加载页面时都会向数据库输入一条空白记录 这非常烦人 因为它与我有其他脚本 我觉得我很愚蠢 但我所需要的只是让脚本仅在单击
  • php 是否在“html body”之前加载?

    很难解释这个问题 但我目前正在将 php 页面中的变量传递给一些 html 隐藏输入 我使用 JavaScript 函数从隐藏输入中获取这些值 该函数的调用方式如下 它现在可以在我的系统上运行 但是从 php 传递的值是否有可能无法通过 因
  • 忽略第一维的二维 JavaScript 数组问题

    简而言之 我根据当前月份和日期填充一个数组 我不会在这里复制代码来获取当前月份和日期 因为它工作正常 它适当地返回变量 月 和 日 我的数组列表包含一年中每一天的项目 该数组以 开始 new var content 然后数组是这样列出的 删
  • 即使代码未编译,GroovyClassLoader 对 parseClass 的调用也会成功

    我试图将 Groovy 脚本作为类动态加载 但即使脚本的代码未编译 也会创建类对象 例如 我加载 Groovy 脚本的 Groovy 代码的简化版本如下 GroovyCodeSource src new GroovyCodeSource b
  • Grails clean 不起作用

    我正在使用 Grails 2 0 1 当尝试运行应用程序时 我发现 NoClassDefFoundError 错误 2012 10 16 15 24 25 301 http bio 8080 exec 9 错误错误 GrailsExcept
  • 无法将 LINQ to SQL 类添加到 VS2010 中的项目

    我刚刚在 Visual Studio 2010 RC 中遇到了一些以前没有发生过的事情 比如昨天 这里没有软件变化 但我昨天在编译时确实遇到了一些麻烦 需要重新启动 我无法通过添加对话框将 LINQ to SQL 类添加到任何项目 我创建了
  • 如何减少 x 轴上两个离散值之间的间距?

    首先 我想在没有 ggplot 的情况下完成此操作 我有一个箱线图脚本 data lt data frame u c 0 522 0 488 0 474 0 443 0 510 0 443 0 420 0 554 0 333 0 414 0
  • 无需 DNS 的通用本地网络名称解析方法?

    我正在为启用 DHCP 的网络设备编写 TCP IP 代码 该设备是否有一种通用的方式可以在野外宣布其主机名 几乎所有网络浏览器 在 osx linux win 上 都可以通过名称访问它 例如 http mydevice index htm
  • PHP 下载 excel 文件损坏

    我有一个 Excel 文件 我希望用户能够从我的服务器下载该文件 我在这里查看了很多问题 但我找不到正确下载文件而不会损坏的方法 我假设它是标题 但我还没有将它们组合起来 这就是我现在所拥有的 在我收到的损坏文件中 我可以看到我想要的电子表
  • 在 JOptionPane 上设置 DocumentFilter

    我在用着 String s JOptionPane showInputDialog 从用户那里得到对问题的答复 该对话框设置为显示响应的文本字段 我想将响应中允许的字符限制为仅字母数字和 是否可以在文本字段上安装 DocumentFilte
  • javascript 文件附加非法字符

    我认为我的 apache 网络服务器有问题 我无法参考jquery js 我收到以下错误 带镀铬 Uncaught SyntaxError Unexpected token ILLEGAL 使用火狐浏览器 Error illegal cha
  • docker重启时数据库丢失

    我在 Windows 10 的 Docker 上运行 influxdb 和 grafana 每次关闭 Docker 时 我都会丢失数据库 这是我所知道的 我尝试过调整保留策略 但对 结果 我可以关闭并重新启动容器 docker compos
  • Spotfire 交叉表中的总计问题

    当我使用FIRST CG1 在 单元格值 中 总计不是求和而是显示结果中的值之一FIRST CG1 请告知我们是否必须始终使用sum XXX 得到总计 简短的回答 是的 如果你想要的话Grand Total是您的数据的总和 将总计应用于不同
  • 如何在 Perl 中压缩多个文件?

    如何 tar 多个目录并附加具有某种模式 如 txt 的文件 并排除某些目录并将某些模式 如 exe 全部排除到单个 tar 文件中 要点是目录数量未知 动态 所以我猜我需要循环遍历 I d use 存档 焦油 http search cp
  • 如何在 Grails 中的控制器中声明 inList 约束?

    谁能告诉我如何声明inListGrails 控制器中的约束 假设我有这门课 class A List hello 我怎样才能添加inList的约束条件为hello List从控制器内部 定义一个约束 其中List属性是否具有针对列表列表进行
  • d3.js 家庭树配偶亮点

    代码链接 http jsfiddle net mj58659094 yKUsQ http jsfiddle net mj58659094 yKUsQ 当单击一个人 节点 时 它也会选择配偶 我只想选择 突出显示 我点击的人 丈夫或妻子或孩子