交错?锁链?由一系列不同的delay()和duration()的d3转换寻址的单个DOM元素

2024-01-09

正如所解释的here http://bost.ocks.org/mike/transition/#per-element,您可以安排连续的转换驱动的属性值更改singleelement [..]“使用transition.transition,它创建一个新的过渡,其延迟立即跟随现有的过渡”(该声明似乎暗示交错过渡不适用于单个元素)。

正如中所解释的this https://groups.google.com/forum/#!topic/d3-js/I5FtBPBDhag然而,帖子“链式转换(transition.transition)是由继承延迟基于前一个转换的延迟 + 持续时间,因此,如果您随后通过自己设置来覆盖延迟,您仍然设置相对于当前时间的延迟,而不是前一个转换的结束时间”。

像往常一样,我似乎有一个特殊情况:单个元素(为了论证,一个颜色要改变的圆圈)由一系列转换处理varying延迟和持续时间。这意味着我别无选择but自己设置延迟和持续时间。

总而言之,据我所知,我既不能蹒跚nor链接转换:在这两种情况下,每个转换的延迟和持续时间将被后继的延迟和持续时间覆盖。

至于例子,我发现的最接近的是this https://stackoverflow.com/questions/17086415/d3-how-to-properly-chain-transitions-on-different-selections,尽管它本身很有用,但并不足以涵盖我的特殊情况。我不知道如何继续。有什么建议么?


您基本上有两个选择。首先,您可以使用正常的链式转换模式,根据先前转换的持续时间计算后续转换的延迟:

 d3.select("svg").append("circle")
   .attr("transform", "translate(20,20)")
   .attr("r", 20)
   .attr("fill", "black")
   .transition().duration(1000)
   .attr("fill", "orange")
   .transition().delay(1500).duration(500)
   .attr("fill", "blue");

第二次转换的延迟 1500 是第一次转换的持续时间 1000 加上第二次转换开始之前的延迟 500。如果您有权访问这些数字(例如,从绑定到元素的数据),您应该能够很容易地计算后续转换的延迟。

另一种方法是使用transition.each() https://github.com/mbostock/d3/wiki/Transitions#each为“结束”事件附加一个处理程序并使用它来设置第二个转换:

d3.select("svg").append("circle")
  .attr("transform", "translate(100,20)")
  .attr("r", 20)
  .attr("fill", "black")
  .transition().duration(1000)
  .attr("fill", "orange")
  .each("end", function() {
    d3.select(this)
    .transition().delay(500).duration(500)
    .attr("fill", "blue");
  });

这里第二个转换的延迟是相对于第一个转换的,即仅在第一个转换完成时才开始。然而,这种方法确实需要您进行这些嵌套调用,这可能可行也可能不可行,具体取决于您要寻找的内容。

如果您可以立即开始转换,则一切都会按预期进行:

d3.select("svg").append("circle")
  .attr("transform", "translate(180,20)")
  .attr("r", 20)
  .attr("fill", "black")
  .transition().duration(1000)
  .attr("fill", "orange")
  .transition().duration(1000)
  .attr("fill", "blue");

这里,当第一个转换完成时,第二个转换开始。

完整演示here http://jsfiddle.net/zjuzgfgu/1/.

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

交错?锁链?由一系列不同的delay()和duration()的d3转换寻址的单个DOM元素 的相关文章

  • D3 强制定向图 ajax 更新

    我使用 d3 js 和 jquery 以及 PHP 后端 基于 yii 框架 来创建动态力定向图来表示我们使用 Nagios 监控的网络上主机和服务的当前状态 该图显示根 gt 主机组 gt 主机 gt 服务 我创建了一个服务器端函数来返回
  • Extjs + D3:渲染冲突

    当我结合 Extjs 和 D3 时 我正在挖掘一些非常有趣的东西 一般来说 ExtJS渲染整个页面的主框架 D3渲染该框架中某个div的动态图 由于Extjs中的渲染逻辑相当复杂 因此我放置D3渲染逻辑的位置似乎至关重要 这里我尝试了两种
  • 如何访问 nvd3 中 d3 图的 x 和 y 比例?

    我正在使用 nvd3 绘制一些系列 并想向图中添加一些任意矩形 如何访问 d3 图的底层 x 和 y 比例 以便将矩形坐标转换为 svg 像素坐标 以便与现有数据的比例相同 function d3 render response nv ad
  • 如何在 Apex 中向 D3 力定向图添加动态图例?

    我在 Apex 中构建了一个 D3 力图 基本上就像http bl ocks org mbostock 1093130 http bl ocks org mbostock 1093130 or http bl ocks org mbosto
  • 从 Java / C# 角度理解 C++ 编译器

    我是一名经验丰富的 Java C 程序员 最近开始学习 C 问题是 我无法理解如何构建各种头文件和代码文件 这似乎主要是由于我对编译器如何将所有内容链接在一起缺乏了解 我尝试阅读一些教科书 但我的先入之见受到我的 Java 和 C 知识的影
  • d3.js:如何在圆环图中的标签下方添加值

    我是 d3 js 的新手 到目前为止我所取得的成就是 this https jsfiddle net saras arya ypdw96v9 使用教程和视频 Now I am trying to add the dataset value
  • 在三角形内强制图表 d3.js

    我正在研究 d3 js 力图 我有一个问题 是否可以在具有某些坐标的三角形内制作力图 这是我的代码 var width 500 var height 500 margin var marginLeft 10 var marginTop 10
  • 将 D3 svg 保存为高质量图像

    有没有办法将 D3 SVG 图像保存为高质量图像 如果是的话请解释一下 截至目前 我正在使用以下代码将 svg 保存为图像 但我得到的图像质量不高 var canvas1 document createElement canvas canv
  • 更改一个 y 轴的范围 nvd3/d3

    我目前正在使用 multiChart 模型 并且有两个不同的 y 轴 我想更改两个轴 使它们从 0 开始 因为目前它们从最小的 y 数据点开始 我尝试过执行以下操作 chart yAxis1 tickFormat d3 format f d
  • 使用canvg将C3.js SVG可视化到Canvas - 折线图填充黑色矩形,“错误:元素'parsererror'尚未实现”

    我正在尝试使用 Canvg 将 SVG 转换为 Canvas 这里是jsfiddle http jsfiddle net sridev24 vcz468f9 我收到一条错误消息 错误 元素 parsererror 尚未实现 我可以理解 ca
  • 调整小倍数迷你图

    我有一个热图 显示一些数据和热图每行的迷你图 如果用户单击行标签 则数据按降序排列 因此每个矩形都会放置在正确的位置 反之亦然 如果用户单击列标签 每个反应都以正确的方式放置 但我无法放置迷你图 这是代码 http plnkr co edi
  • d3 转换改变了哪些属性?

    我试图了解 d3 中到底发生了什么转换 例如 var bars svg selectAll null data my values enter append rect statement before transition attr x 1
  • 使用不同颜色的 dc.js 显示原始(有条件)拉丝未拉丝交叉过滤器条

    假设我们有以下 crossfilter dc js 应用程序 虽然这很好 但用户在刷牙时会失去对人群的 参考 我想要图表x y z and a在刷其他图表时保留 基础 柱 也许是不同的颜色 如下所示 我相信这可能需要更新dc renderA
  • d3.select 不适用于特殊字符

    我正在使用 d3 js 处理简单的图表 假设下面的 div 是我计划放置 d3 的 svg 容器的地方 div 但是当我使用 d3 select my div chart 我无法选择特定的 div 但是通过使用 java 脚本选择器 它可以
  • 通过 Fabric.js 推送 D3.js 输出以支持 IE8?

    我正在评估Fabric js http fabricjs com 作为替代拉斐尔 js http raphaeljs com 用于创建与 IE8 兼容的交互式可视化 IE8 不支持 SVG 或画布 不幸的是 IE8 支持是不可协商的 Rap
  • 如何在D3中导入json数据?

    如何在D3中导入json文件 I did d3 json temp json 但是我如何在进一步的代码中访问这个数据集呢 到目前为止我已经尝试过 var data d3 json temp json 但使用 data data 在其余代码中
  • 如何使用数据对象中的值指定 d3.js 选择器?

    我在 Web 应用程序中使用 d3 js 描述我想要做的事情的最简单方法是查看下面链接的 Fiddle 但基本设置是我有一个包含数据对象的数组 my data id B text I want this text in B id C tex
  • D3js 多折线图 mouseOver

    我正在努力适应this http bl ocks org mbostock 3902569D3js 折线图示例 将鼠标悬停在我的多线图表上的使用情况 看起来d3 mouse this 0 on the mousemove函数生成以下错误 无
  • D3.js分组条形图

    I am making a bar chart using D3 js like this source statcan gc ca http www statcan gc ca pub 12 593 x 2007001 figures f
  • 在 D3 中在外部加载的 svg 图形上绘图

    我已经从 svg 文件加载了外部图形 我想尝试在其上绘图 但不知道如何操作 我的简单 d3 代码在这里

随机推荐

  • SVG animateTransform 平移和缩放同时失败

    我有一条想要使用的动画路径animateTransform 我想同时平移和缩放路径 这不起作用 显然只有第二个动画起作用 在这种情况下scale 我究竟做错了什么 svg width 300px border 1px solid fill
  • 在ubuntu Linux服务器上通过命令行运行php文件

    我试图在 ubuntu Linux 服务器上运行 php 文件 但当我运行 php file name php 时出现 找不到命令 错误 在网上搜索时 我发现一篇文章建议我运行 sudo aptitude install php5 cli
  • InterfaceBuilder NSButton 连接到 NSViewController 原因“无法连接操作,目标类 NSObject 不响应”

    我有一个基于视图的NSTableView其 文件的所有者 是ViewController 我在自定义上拖动了一个按钮 用于删除 NSTableCellView 所以我想单击按钮并从 tableView 中删除当前行 但是当添加行时调试控制台
  • 隐藏用于 editText 焦点/触摸的软键盘

    我试图隐藏软键盘 使其在 EditText 接收焦点或触摸事件时不显示 我希望 EditText 是可编辑的 EditText 中会有文本 因此我希望 EditText 响应触摸事件 以便定位光标 但我将有专用的编辑按钮 而不是使用软键盘
  • 使用 Jasmine 测试时,Angularjs 注入控制器为空

    我目前正在与Angular 以及使用 Karma 和 Jasmine进行测试 例如 过滤器被注入到主模块中 并且可以毫无问题地进行测试 但是当我尝试测试控制器时 我得到了一个空物体注射后 这是我的主模块的代码 function use st
  • 具有固定滚动行和固定滚动列的大型动态大小 html 表格

    我需要在网页上显示一个大表格 并且需要防止第一列和第一行滚动 我想动态设置此表的垂直大小 在某些静态大小的页眉 页脚页面内容之间 以使其尽可能高 而不强制浏览器窗口具有垂直滚动条 browser window fixed static we
  • SwiftUI 安排本地通知没有按钮?

    这可能有一个非常简单的答案 因为我对 Swift 和 SwiftUI 还很陌生 并且刚刚开始学习 我正在尝试安排每天在特定时间重复的本地通知 但仅在选择切换时才执行此操作 因此 如果变量为真 我希望安排该通知 我在网上看了一些教程 比如这个
  • POST 字典为 JSON

    我需要将字典中的一些字段 来自 VB Net 应用程序 以 JSON 格式发送到 Web 服务 下面是代码 Dim dict As New Dictionary Of String String dict Add Drinks 2 dict
  • Fortran 中是否可以将零值变量输出为空白?

    我想在格式化文件中输出实际变量 如果变量非零 则使用格式语句 但如果变量为零 则仅输出空格 类似于 Iw 0 的做法 是否可以在格式语句中执行此操作 谢谢 不 不是使用格式语句 但是通过将值写入字符串并进行处理 这相当容易做到 下面是一个演
  • 如何制作一个极其广泛的情节

    我有一个包含 10000 个观察值的长时间序列 我想将其可视化 问题是 如果我只是正常地绘制它 时间维度将被压缩 并且我想要可视化的时间序列的任何细节都不会明显 例如 plot sin 1 10000 100 rnorm 10000 5 t
  • 具有私有 IP 的 Kubernetes 入口控制器

    是否可以在没有公共 IP 地址的情况下部署入口控制器 nginx Thanks 是否可以在没有公共 IP 地址的情况下部署入口控制器 nginx 毫无疑问 是的 如果 Ingress 控制器的Service is of type NodeP
  • 如何显示 url 中的图像?

    我有一个字符串变量tmpImgURLStr其中包含类似的 URLwww abc com img png 我想在我的 imageView 中显示该图像 因为我使用了一些代码 但它不起作用 如下所示 NSLog Img URL tmpImgUR
  • C++:按值将对象传递给同一类的成员函数

    我是 C 的初学者 刚刚开始学习 OOP 在下面的程序中 我添加了相同类的对象并显示了结果 但是 我无法理解这样一个事实 如果我按值将对象传递给函数 那么更改如何反映在调用函数中 这addNumbers 函数需要 Complex 类的两个对
  • 如何在test-cafe中使用数据发出post请求?

    我是 api 测试的初学者 我正在使用test cafe我已经写了测试来制作GET请求使用请求钩子工作正常 我能够获取数据 但是当我尝试制作时POST请求使用相同的请求钩子并且我在发出请求时无法发送数据 因为它需要是缓冲区类型 我无法将 J
  • 在 redux-observable 中编写和排序多个史诗

    我有一个问题不知道如何解决 我有两个史诗向 api 发出请求并更新商店 const mapSuccess actionType gt response gt type actionType SUCCESS payload response
  • 在单元测试中获取控制器的编译模板

    我有以下控制器 angular module app controller userList scope appRules function scope appRules scope isUserInRole function user r
  • 如何直接从 Rails 控制器返回 HTML?

    我的模型对象之一有一个 文本 列 其中包含网页的完整 HTML 我想编写一个控制器操作 它直接从控制器返回此 HTML 而不是像控制器上的其他操作一样通过 erb 模板传递它 我的第一个想法是将此操作放入一个新控制器中 并制作一个具有空布局
  • 带计数的堆叠条形图中 geom_text 的百分比

    我想要一个堆叠条形图 其中包含基于计数的百分比 我几乎达到了我想要的 但文本中的每个值都是 100 而不是真正的百分比 我认为我的代码中有一个小错误 但我找不到它 ggplot mtcars aes fill factor gear x f
  • 改进通过 JSON 将服务器数据库镜像到客户端数据库的过程?

    我有一个现成的适用于 iPad 的企业 非 AppStore 旧版 iOS 应用程序 我需要重构它 它是由另一位开发人员编写的 他是我当前工作的前任 该应用程序通过 JSON 从具有 MSSQL 数据库的服务器获取数据 数据库模式有大约 3
  • 交错?锁链?由一系列不同的delay()和duration()的d3转换寻址的单个DOM元素

    正如所解释的here http bost ocks org mike transition per element 您可以安排连续的转换驱动的属性值更改singleelement 使用transition transition 它创建一个新