手动将元素添加到 d3 中的选择中

2023-12-24

我正在尝试以编程方式在 d3 中创建一个表,其顶部有四分之一,左侧有值。给定一个四分之一向量["q1", "q2", "q3", "q4"],我想要表格:

   | q1 | q2 | q3 | q4 |
v1 |    |    |    |    |
v2 |    |    |    |    |

运行下面的代码时我得到的是:

   | q2 | q3 | q4 |
v1 |    |    |    |
v2 |    |    |    |

请注意,第一列缺失。我正在使用以下代码:

var qtrs = ["q1", "q2", "q3", "q4"];

var info = d3.select("body"),
    thead = info.append("thead"),
    tbody = info.append("tbody");

thead.append("tr").append("th").text("")
thead.select("tr")
    .selectAll("th")
    .data(qtrs)
    .enter()
    .insert("th")
    .text(function (d) { return (d);  });

tbody.append("tr").insert("td").text("Value 1")
            tbody.append("tr").insert("td").text("Value 2")
            tbody.selectAll("tr").selectAll("td").data(qtrs).enter()
            .append("td").text("0.0");

也可以在这里找到:http://jsfiddle.net/TpCJk/ http://jsfiddle.net/TpCJk/

我正在努力解决的部分是如何在使用时手动选择/添加单个元素(即第一列)到表中data(qtrs)自动生成其余的列。

似乎发生的情况是 selectAll 还选择(手动创建的)空单元格并覆盖它。我尝试稍后添加第一列(将thead.select("tr").insert("th").text("...");创建后th然而,它似乎总是落在桌子的末尾,而不是开始。

请注意,qtrs这里的数组是一个例子,在我的完整应用程序中,它将取决于传递给它的数据(即可以更长或更短)。 “值 1”和“值 2”行是固定的。

非常感谢任何帮助!


问题是您已经有一个未通过数据指定的表(标题)单元格。 D3 将数据元素与 DOM 元素匹配的方式(在data()函数)默认按索引。也就是说,您传入的第一个数据元素与第一个表(标题)单元格匹配,在您的特定情况下,该单元格已经存在。因此,它不在.enter()选择。

解决此问题的最佳方法是简单地提供一个函数来告诉 D3 如何将数据与 DOM 元素匹配。代码

thead.select("tr")
     .selectAll("th")
     .data(qtrs, function(d) { return d; })
     .enter()
     .insert("th")
     .text(function (d) { return (d);  });

正确插入所有表头。如果您在添加表格单元格时指定相同的匹配函数,它们也将被正确添加(即正确的列数)。

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

手动将元素添加到 d3 中的选择中 的相关文章

  • 寻找一种重构 D3.js 风格的方法链接模式的方法

    在学习 D3 js 时 我遇到了博客文章 http bost ocks org mike chart 解释其可重用代码单元背后的主要设计模式 我复制了下面的相关代码 下面呈现的模式的方式正是在 D3 代码库和插件中使用的方式 example
  • 使用 d3.json()/d3.xhr() 进行多部分发布请求

    目前是否不支持通过请求提交多部分表单数据 我了解如何使用 d3 json post 执行 POST 如上所述here https stackoverflow com questions 12493758 xhr post request u
  • Webpack 不包括 ProvidePlugins

    我正在开发一个小型试用 Web 应用程序 它使用 vue webpack 模板 https github com vuejs templates webpack https github com vuejs templates webpac
  • D3.js 中的点图

    我有兴趣创建一个Dot plot 每个数据值都有连续的点 但到目前为止我所管理的是为每个值创建一个点 更清楚地说 假设对于 array1 我希望第一个值创建 5 个圆圈 第二个值创建 4 个圆圈 依此类推 array1 5 4 2 0 3
  • D3:如何在Groups of Force布局节点上绘制多个凸包?

    我试图在力布局中的所有组上绘制凸包 但我只画出了一半的凸包 当 D3 尝试绘制其余的船体时 控制台返回错误 元素尚未创建 然而 当我检查控制台中的 groups 变量时 所有组数据都在那里 x y 数据都设置得很好 见下图 我什至尝试在ti
  • d3.js:非线性图轴

    我正在尝试在轴上添加自定义比例 如下所示 这个想法是 一个刻度总是比前一个刻度大 2 倍 我的理解是 这是一个定制秤 我做了一些研究 但找不到类似的东西 所以我想我的问题实际上是两个问题 这个尺度是数学世界的 标准 吗 这是否可以使用来实现
  • D3 旭日弧尺寸

    我正在尝试根据以下示例创建 D3 旭日图 https bl ocks org maybelinot 5552606564ef37b5de7e47ed2b7dc099 https bl ocks org maybelinot 55526065
  • 在 d3 中应用转换时出现错误

    我正在尝试对我在 d3 中设计的条形图应用一些过渡效果 这是我的代码 svg selectAll bar data data enter append g attr class bar append rect attr rx barRadi
  • 分配函数后如何删除 onmouseout 事件?

    我有一个问题 我正在为 onmouseout 事件分配一个函数 但运行该事件后 我需要将其删除 将非常感谢您的帮助 这取决于你的代码 如果你用 d3 这样做 那么你可以说 在 onmouseout 事件函数中 element on mous
  • 反转比例函数

    这对我来说很有趣 看下面的D3代码 var scale d3 scale linear domain 100 500 range 10 350 scale 100 Returns 10 scale 300 Returns 180 scale
  • 如何将此数据编码为 JSON 中的父/子结构

    我正在使用 d3 js 将动物 有机体 家族 一次最多 4000 个 可视化为树形图 尽管数据源也可以是目录列表或命名空间对象列表 我的数据如下 json organisms name Hemiptera Miridae Kanakamir
  • 在 Crossfilter 中使用过滤器

    我刚刚开始使用 crossfilter 和 d3 js 我正在尝试 API 参考中给出的一些片段 我有以下数据 var payments crossfilter date 2011 11 14T16 17 54Z quantity 2 to
  • d3.js 堆叠条形图 - 修改堆叠顺序逻辑

    我想创建一个堆积条形图 其中矩形的顺序由数据值确定 即最大到最小 最高到最短 最富有到最贫穷等 据我所知 在堆叠数据后 initial秩序似乎得到保留 这可以在我的代码片段中看到 硬编码数据让我们可以看到之前和之后发生的情况d3 stack
  • 在 d3.js 中操纵鼠标悬停在“点击区域”

    我想show and hideSVG 中的一个节点 当鼠标移到 mouseout 问题是我的节点内部的形状是一条宽度只有1 5px的路径 因此在鼠标悬停事件中不容易击中该区域 这对用户体验肯定不方便 我想知道是否有办法做到这一点打击范围更广
  • 在d3.js中将2D形状转换为3D,并根据ANGULAR中的值调整高度

    我正在使用 d3 js v6 创建以下 2D 图表表示的 3D 图表 这个圆圈中有多个正方形 每个正方形都根据值分配了一种颜色 值越大 正方形越暗 现在我想将其转换为 3D 形状 其中当值变高时 只有特定正方形的高度会增加 因此结果在某种程
  • 需要js、d3 和 nvd3 集成

    我面临整合的问题要求 questions tagged requirejs with d3 questions tagged d3 and nvd3 questions tagged nvd3 我找到了一个使用 require 的简单解决方
  • d3 仅限整数刻度线

    我有一个 d3 条形图 其值范围为 0 3 我希望 y 轴仅显示整数值 我可以这样做 var yAxis d3 svg axis scale y orient right tickFormat d3 format d 但是 非整数标记处仍然
  • 如何在 Angular 2 中实现 D3

    我想将这段代码从 d3 js 实现到 Angular 2 组件 但我不知道如何将 js 文件调用到组件 ts 文件中 我找到了一些折线图的代码 包括index html和lineChart js 我怎样才能调用javascriptngAft
  • D3.js - 更改鼠标悬停时元素的不透明度 IF 条件 = false

    我正在制作一个带有过滤器的交互式 D3 js 图表 当用户单击选定的复选框时 该过滤器会显示点 此外 在鼠标悬停事件上 所选点旁边将出现一个弹出窗口 其中包含一些信息 由于图表上的点数量相对较多 因此我选择在取消选中相应复选框时使相关点变得
  • 如何使用 d3.format 获取可本地化或可定制的 si 代码

    使用 SI 代码绘制图表正是我们想要的 我们的 y 轴值往往是较大的货币值 例如 10 411 504 201 20 缩写这个 至少在美国语言环境中 这应该转换为 10 4B 但是使用 d3 format 的 s 类型表示 SI 代码 这将

随机推荐

  • Twitter API - OOB 流程

    我正在开发一个需要访问 Twitter 的移动应用程序 有大量有关在 Web 应用程序中使用 Twitter API 的文档 但我很难找到正确的流程或任何针对桌面和移动应用程序使用带外 PIN 码模式的示例 谁能给我指出一个链接或一些代码示
  • 加入map并在HQL中引用它的key/value

    假设我有一张地图
  • Perl 中的“$x->Put”有什么作用?

    我正在看这段代码 diag cmd pack CCSV DIAG SUBSYS CMD F DIAG SUBSYS PWRDB PWRDB DIAG PKT SCRIPT processor select length s part s p
  • 为什么Datareader无法初始化?

    我们在类名之前使用abstract关键字来限制创建类的实例 但 datareader 不是一个抽象类 但我们无法创建它的实例 你能解释一下为什么吗 我搜索了它 然后发现它没有构造函数 这就是为什么我们无法创建对象 但据我所知 如果没有构造函
  • ActiveX初始化:AxHost.State对象

    我正在尝试使用 WinFormsHost Control 将 Unity3D ActiveX 控件嵌入到 WPF Form 中 实际上 在VS的属性窗口中设置路径时效果很好 但在我的代码文件中设置时它不会加载任何内容 这是控件的一个已知问题
  • VSCode 中的 .ejs 格式

    这是我的问题 它不可读 为了使 ejs 正常工作 我到目前为止添加了以下内容 我还有保存格式和更漂亮的格式 我正在寻找更好的格式的建议 以便我可以阅读它 files associations ejs html css postcss emm
  • 如何将 PreMake/CMake 集成到 C++ 构建工作流程中

    我目前正在研究 PreMake CMake 但是 我不明白如何在整个跨平台构建工作流程中使用它 事实上 它生成 makefile 或解决方案 那么 如何在每个目标平台上实际构建这些解决方案 您是否必须为每个目标维护一个构建脚本 例如 sh
  • 如何检查当前日期是否在java中两个重复出现的日期之间? [复制]

    这个问题在这里已经有答案了 我正在尝试创建一个应用程序 但在计算今天是否在学年中陷入困境 用户输入两个日期 没有年份 每年都会重复发生 这些是学年的开始和结束日期 我想检查当前日期是否在这两个日期之间 即使它重叠两年 因此 如果学校从 11
  • 推送通知到达时应用程序徽章图标未更新

    我看过关于的问题在午夜更新应用程序徽章 并提供以下选项 应用程序未启动或在后台 徽章数量可能会减少 https stackoverflow com questions 4846787 updating application badge a
  • 用户登录后访问登录页面如何重定向到首页?

    这是我的春季安全配置
  • 将事件函数绑定到类,但使用removeEventListener并删除引用,从而使垃圾收集器能够正常工作

    众所周知 当我们在 JavaScript 中创建类时 普通函数会返回类对象 但事件会返回事件对象 并且类对象会丢失 function class a this name a document addEventListener click t
  • 如何在 bash 中编写看门狗守护进程?

    我想要一种在 shell 脚本中编写守护进程的方法 该守护进程循环运行另一个应用程序 如果它死了则重新启动它 运行时使用 myscript sh从 SSH 会话中 它将启动守护程序的新实例 除非守护程序已在运行 当 SSH 会话结束时 守护
  • Shared_ptr 的隐式转换

    我有 U 类和 T 类的两个共享指针 其中 T 是 U 的基数 进行隐式转换是没有问题的shared ptr u to shared ptr u
  • 如何在 Jetpack Compose 中从 URL 加载图像? [复制]

    这个问题在这里已经有答案了 嗯 我正在研究 Compose UI 而且我只专注于基本的事情 其中之一是使用 Glide 显示来自 URL 的图像 我已尝试以下代码 但未调用委托 onResourceReady 和 onLoadCleared
  • 访问 servlet 实例

    虽然我真的无法想到这种情况的实际用例 但我纯粹希望这是一个好奇心驱动的问题 我知道 servlet 容器保存着 servlet 创建的所有实例 并将请求线程委托给这些实例 对这些实例进行管理也是有意义的 以避免在容器权限之外进行无根据的调用
  • 有没有办法在线程创建/销毁时调用库线程本地初始化/清理?

    这个问题类似于如何在线程创建和退出时调用函数 https stackoverflow com questions 42229612 how to call a function on a threads creation and exit但
  • iPhone 版本的“显示包内容”显示空白 PNG?

    所以我成功地完成了我的第一个 iPhone 版本构建 当我好奇地转到新鲜出炉的 app 文件的 显示包内容 时 我注意到所有包含的 PNG 都是空白的 它们都设置为适当的分辨率 但是当我打开它们时 除了默认的 Preview app 灰色之
  • 如何在 Ruby 中找到字符串的第一个非重复字母?

    我有一根绳子 teststring 我想在 Ruby 中找到第一个非重复字符 我有这个Python代码 def first non repeat character teststring unique repeated for charac
  • Flask-登录不重定向到上一页

    我看到了很多与此相关的问题 但无法解决我的问题 我有一个 Flask 应用程序 带有 Flask login 用于会话管理 而且 当我尝试在不登录的情况下查看页面时 我会被重定向到以下形式的链接 login next 2Fsettings
  • 手动将元素添加到 d3 中的选择中

    我正在尝试以编程方式在 d3 中创建一个表 其顶部有四分之一 左侧有值 给定一个四分之一向量 q1 q2 q3 q4 我想要表格 q1 q2 q3 q4 v1 v2 运行下面的代码时我得到的是 q2 q3 q4 v1 v2 请注意 第一列缺