d3.js:将匿名函数作为参数传递给居中力?

2023-12-23

我正在制作一个交互式气泡图,并且正在研究将数据分为两组并移动到屏幕两侧的功能。我在模拟中使用了居中力,因为我认为它比使用forceX 和forceY 能提供更好、更一致的数据显示。但是,我在分割数据时遇到了麻烦。

我的想法是,由于您可以将匿名函数作为参数传递给 forceX 来确定节点是向左还是向右移动,所以理论上您可以对居中力中的 x 值执行相同的操作。我的中心力代码如下所示:

var forceCenterSplit = d3.forceCenter(function(d) {
            if (d[splitParameter] >= splitVal)
                return 3*width/4;
            else
                return width/4;
        }, height/2)

为了进行比较,下面是完成相同任务的 ForceX 的代码:

var forceXsplit = d3.forceX(function(d) {
                if (d[splitParameter] >= splitVal)
                    return 3*width/4;
                else
                    return width/4;
            }).strength(.05);    

不幸的是,控制台显示“解析 cx 属性时出现意外值 NaN”。当我运行对中力并将所有数据推至 cx = 0(默认值)时。

我在这里缺少一些基本的东西吗?不能将匿名函数作为参数传递给居中力吗?如果没有,有更好的方法吗?

Thanks!

// nicer looking splitting forces that use forceCenter
        var forceCenterCombine = d3.forceCenter(width/2, height/2);

        var forceCenterSplit = d3.forceCenter(function(d) {
            if (d[splitParameter] >= splitVal)
                return 3*width/4;
            else
                return width/4;
        }, height/2);

        // simple splitting forces that only use forceX
        var forceXSplit = d3.forceX(function(d) {
            if (d[splitParameter] >= splitVal)
                return 3*width/4;
            else
                return width/4;
        }).strength(.05);

        var forceXCombine = d3.forceX(width/2).strength(.05);

        // collision force to stop the bubbles from hitting each other
        var forceCollide = d3.forceCollide(function(d){
            console.log("forceCollide");
            return radiusScale(d[radiusParam]) + 1;
        }).strength(.75)

        // This code is for the simulation that combines all the forces
        var simulation = d3.forceSimulation()
            .force("center", forceCenterCombine)
            .force("collide", forceCollide)
            .on('end', function(){console.log("Simulation ended!");});

        function ticked() {
            circles
                .attr("cx", function(d){
                    return d.x;
                })
                .attr("cy", function(d){
                    return d.y;
                })
        }

var splitFlag = false;

        // dynamically divide the bubbles into two (or probably more later on) groups
        $scope.split = function() {
            // split them apart
            if (!splitFlag){
                console.log("splitForce");
                simulation.force("center", forceXSplit)
                    .force("y", d3.forceY(height/2).strength(.05))
                    .alphaTarget(.25)
                    .restart();
                splitFlag = true;
            }
            // bring them back together
            else {
                console.log("combineForce");
                simulation.force("center", forceCenterCombine)
                    .alphaTarget(.25)
                    .restart();
                splitFlag = false;
            }
        };

不幸的是,答案似乎是no.

由于其本质d3.forceCenter, that (“传递一个匿名函数作为参数”) 不可能。 API 说:

对中力均匀地平移节点,使得节点的平均位置所有节点(如果所有节点权重相等,则质心)位于给定位置 ⟨x,y⟩。 (强调我的)

因此,这里没有空间用于访问器函数。forceX and forceY, 另一方面...

将坐标访问器设置为指定的数字或function。 (再次强调我的)

...并且可能最适合您。

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

d3.js:将匿名函数作为参数传递给居中力? 的相关文章

  • 使用 React js 和 Express API 服务器通过 fetch 发布对象

    我在 fetch 中的 post 方法遇到麻烦 因为我的服务器从客户端接收到一个空对象 我已经检查了客户端 但无法发送我想要发送的值 这是我的服务器 const express require express const app expre
  • react-dom/server 可以在客户端工作吗?

    我需要在客户端呈现顶级 html 标签 例如 结果将被注入到 iframe 中 在服务器上 我会使用renderToStaticMarkup函数来自react dom server 但仅限客户端react dom没有这个功能 Will re
  • 通过单击堆叠条形图打开选项卡

    我正在使用 R 构建一个包含转发的堆积条形图 ggplot and plotly 如果单击条形图的一部分 我希望打开一个新的浏览器选项卡并显示该特定日期的推文以及指定的转发量 但是 当我单击下面示例中的其中一个栏时 会打开一个不同的链接 表
  • d3 树 - 有相同孩子的父母

    我一直在将代码从 JIT 转换为 D3 并使用树布局 我已经复制了代码http mbostock github com d3 talk 20111018 tree html http mbostock github com d3 talk
  • 在 JavaScript 中解析日期时间字符串

    有谁知道如何解析所需格式的日期字符串dd mm yyyy See Mozilla Core JavaScript 参考 日期对象 https developer mozilla org en Core JavaScript 1 5 Refe
  • 在生产中使用 css / javascript 源映射对性能有何影响?

    生产环境中应该使用源映射吗 除了调试之外 它们还有什么好处吗 由于额外的服务器往返 它们是否会影响应用程序加载时间 浏览器是否足够智能来加载 map应用程序加载和渲染后的资产 如果浏览器找不到 map asset 404错误 会对性能产生影
  • 仅当 url 以 www 为前缀时才会发生 CORS 错误

    我目前遇到一个关于 CORS 跨源资源共享 的问题 奇怪的是 只有当我使用 www url 前缀时 才会出现这种情况 例如 当我使用以下网址访问我的网站时 http example com index http example com in
  • 如何查明在 Chrome 控制台中按下按钮时会调用哪些函数?

    我正在尝试自学 Google Closure javascript 库 我正在检查 TreeControl UI 小部件 如何使用Chrome控制台分析当我点击下面演示中的 剪切 按钮时运行了哪些功能 例如 我可以为此设置一个断点吗 我尝试
  • PHP:在执行 php 脚本时显示“正在加载”页面

    这就是我现在所拥有的 我有一个网页 当访问该网页时 它会通过开放 API 连接到 Surveygizmo com 检索大量数据 然后将这些数据返回给我进行处理 此过程大约需要 10 12 秒 在执行时 页面只是处于 正在加载 状态 并且我会
  • 使用 System.js 导入 Typescript 编译的模块时出错

    我最近正在学习使用 system js 导入由 Typescript 编译的模块 这些模块之前是为 require js 编译的 并且工作正常 但是合并到system js时 应用时无法导入模块系统生产 js 控制台说 Uncaught i
  • 输入号码时自动格式化 SSN

    我有一个文本字段 用户输入 SSN 号码 输入自身时 它应该格式化 就像关于文本字段的更改 它应该格式化999 999 999以这种方式在显示器本身上 kottenator 的脚本几乎已经完成 但它每隔 3 位数字就中断该值 而不是 3 位
  • 如何使 Meteor 上的服务器可以访问文本文件

    我很惊讶我无法在这里搜索我的答案 似乎没有其他人遇到这个问题 当您运行meteor服务时 js html等被打包在 meteor local build文件夹中 但它似乎排除了不是js或html的内容 我有一个名为 magicsets 的文
  • EaselJS Alpha 遮罩滤镜

    我对 Canvas 还很陌生 我一直在尝试将图像颠倒过来EaselJS Alpha 蒙版 http www createjs com demos easeljs alphamaskreveal示例 以便初始图像清晰 并且您可以paint是模
  • 在成功回调之前修改 JSONP 结果

    我想从外部服务加载一些 JSON 数据 然而 它提供 foo bar useful 而我真正关心的是 有用 的部分 我需要将那部分传递给success打回来 我正在尝试使用Deferred一次从多个数据源加载 类似this https st
  • Chrome 和 IE 上的滚动/延迟事件

    我试图让用户始终看到一个内容块 即使他向下滚动页面也是如此 他还应该能够上下滚动内容块 这是一个精简版本的小提琴 向您展示我的意思 http jsfiddle net 9ehfV 2 http jsfiddle net 9ehfV 2 人们
  • ExtJS:简单表单忽略 formBind

    我有一个小问题让我发疯了好几天 我有一个表单面板 Ext define EC view PasswordPanel extend Ext form Panel alias widget pwdpanel bodyPadding 15 ini
  • 如何创建浏览器插件?

    我必须创建一个插件 当用户将鼠标悬停在某些术语上时 该插件必须显示信息 谁能告诉我如何做的方向 我对创建插件没有太多想法 我知道我想要做的事情可以通过java脚本来完成 但是java脚本文件可以作为浏览器插件安装吗 任何对此的想法将不胜感激
  • 如何选中表格中输入文本焦点上的复选框

    我试图在输入文本焦点上检查表 DOM 中的复选框 但无法访问复选框元素 但我的焦点正在工作 这是我的 jsfiddle 链接https jsfiddle net 9qha9vft https jsfiddle net 9qha9vft 这是
  • JavaScript:如何在 Internet Explorer 中模拟更改事件(委托)

    UPDATE 回顾 小提琴和赏金 这个问题并没有引起太多关注 所以我将花一些时间来解决这个问题 我知道我的答案和问题都过于冗长 这就是为什么我继续设置这把小提琴 http jsfiddle net vVA8N 在我看来 这是我目前必须用来接
  • 使用 Javascript 删除字符串的最后一个字符

    我有一个DIV与一些字符 如何在每次单击时删除文本中的最后一个字符DIV itself 删除第一个字符 div on click function this text function index text return text repl

随机推荐

  • Django、Angular 和 DRF:Django 后端与 API 的身份验证

    我正在构建一个具有 Django 后端 Angular 前端和 REST API 的应用程序 使用 Django REST Framework 供 Angular 使用 当我仍在使用普通前端开发后端内容时 我使用提供的 Django 身份验
  • 使用 Swift 的 UITableView 和 MVVM

    我正在尝试MVVM架构在斯威夫特与UITableView 为此 我创建了示例表视图 任何人都可以建议我是否正确或需要做任何其他改进吗 以下是该架构的类 视图控制器 包含UITableView和它的delegate and datasourc
  • CPAN 安装新模块是否会影响同一实时生产服务器上的 Perl-CGI 应用程序?

    我在 CentOS Linux 网络服务器上有一些 Perl CGI 程序 我希望编写更多需要当前未安装的 Perl 模块的应用程序 在同一实时生产服务器上运行 CPAN 是否会以任何方式影响这些程序 显然 当前不使用这些模块 有一种可能的
  • 具有 Google 会话和帐户选择器的移动应用浏览器的行为

    问题 尝试在移动应用程序之间创建 SSO 和浏览器 我们有什么 我们有一个离子移动应用程序 使用 OAuth 2 0 身份验证 通过 Google 登录 我们有多个适用于 OAuth2 和 SAML 的内部应用程序 因此 我们为 GSuit
  • 从 C# 表单登录 Skype

    我没有找到如何从 C 表单登录到 Skype 有可能这样做吗 例如我在表单中输入用户名和密码 当我单击 登录 时 Skype 实例将启动并使用我的凭据记录我 多谢 您可以使用命令行参数启动 Skype 如下所示 skype exe user
  • Angular cli 排除“ng test --code-coverage”的文件/目录

    我正在运行以下命令来进行单元测试并生成代码代码覆盖率报告 ng test code coverage 它工作正常并在中编写代码覆盖率报告coverage folder 在这里我得到了所有文件和目录覆盖率报告 但我想排除特定的文件 目录src
  • 将 JS 对象数组发布到 Spring MVC 控制器

    我正在尝试将长数组从 jquery load 传递到 spring 控制器 我如何向 spring mvc 控制器发送 js 对象数组 每次发生操作时 都会调用脚本上的无数据警报 Script var arr Array document
  • 如何使用 UI 自动化库单击“窗格”?

    我们有一个应用程序 我需要在其中单击一个窗格 我尝试使用以下代码 我用它来单击按钮 但它给出了不支持的模式异常 InvokePattern click pattern InvokePattern adjust button GetCurre
  • WPF 中的 OpenGL 控件 - 如何操作?

    我需要在我的 WPF 项目中使用 OpenGL 我希望它的安装尽可能简单 但我开始失去希望 我试过了SharpGL 它非常好且易于使用 但它存在大量内存泄漏 并且应用程序在几秒钟后崩溃 不是很有用 所以现在我想知道 这个库有替代方案吗 实际
  • 如何在运行浏览器化脚本之前设置 process.env?

    最初的html来自后端 服务器有一个定义的process env NODE ENV 以及其他环境变量 浏览器化的代码是建造一次 and 在多个环境上运行 staging production等 因此不可能将环境变量内联到浏览器化脚本中 通过
  • 如何在 will_paginate gem 中进行无限滚动

    我正在尝试无限滚动 但我不知道为什么它不起作用 allposts html erb 部分 div class iterate div 职位控制器 class PagesController lt ApplicationController
  • 代码行数旁边的垂直线是什么

    这些线到底是用来做什么的 扩展程序的名称是什么 这些行表示文件中的更改 蓝线表示修改 修改了代码行 绿线表示添加 添加了代码行 红线表示删除 删除了代码行 它们是通过版本控制系统 VCS 扩展 例如 Git 添加的 您可以在上面找到具有相似
  • 基于类和基于对象的语言比较(ECMAScript 规范)

    In a class based object oriented language in general state is carried by instances methods are carried by classes and in
  • 从 MVC 项目访问类库?

    我在一个解决方案中有一个类库项目和 MVC 项目 我的类库具有命名空间 MyStuff Classes 我的 MVC 项目具有命名空间 MyStuff Web 我似乎无法从 mvc 项目访问我的类库 反之亦然 直接或使用 using 指令
  • iPhone 5 的弱光增强模式

    有谁能够在他们的自定义相机应用程序中使用 iPhone 5 的新低光增强模式吗 我尝试了以下代码 但发现没有任何区别 而本机相机应用程序显着提高了亮度 if captureManager backFacingCamera isLowLigh
  • 微服务架构中如何在微服务之间共享java模型

    我正在设计新应用程序的架构 我选择了微服务架构 在我的架构中 我注意到我有不同微服务使用的模型 我想知道是否有一种方法可以在微服务之间共享模型代码 而不是在每个微服务中编写它们 顺便说一句 我正在为我的应用程序使用 spring boot
  • PHP $_POST 数组用于未选中的复选框

    如果我有一个带有两个复选框的表单 它们具有与 name 属性相同的数组 名称 1 1 这些复选框都没有被勾选 我有什么方法可以知道它们存在于表单中吗 如果未选中这些字段 则不会通过 POST 数组发送这些字段 我问这个是因为这些名称值是动态
  • 更改 SQL Server 2005 中数据库图表的所有者

    我需要更改 SQL Server 2005 中数据库图表的所有者 目前它归我所有 domain username diagramName 我想将其更改为 dbo dbo diagramName 所有 我以为我可以使用 sp changeob
  • 如何从 php 脚本设置 cron 作业?

    我是 cron 工作的新手 我研究了一些有关 cron 作业的基础知识 我可以使用 cron 选项卡调用 php 通过在 etc crontab 中使用以下命令 10 root usr bin php var www PATH TO SCR
  • d3.js:将匿名函数作为参数传递给居中力?

    我正在制作一个交互式气泡图 并且正在研究将数据分为两组并移动到屏幕两侧的功能 我在模拟中使用了居中力 因为我认为它比使用forceX 和forceY 能提供更好 更一致的数据显示 但是 我在分割数据时遇到了麻烦 我的想法是 由于您可以将匿名