d3js:有两个y轴时缩放

2024-01-08

参考:https://github.com/mbostock/d3/wiki/Zoom-Behavior https://github.com/mbostock/d3/wiki/Zoom-Behavior

//make zoom
var zoomFirst = d3.behavior.zoom()
  .x(x)
  .y(y1)
  .scaleExtent([0, 3])
  .size([w, h])
  //.center([w/2+200, h/2-200])
  .on("zoom", zoomedFirst);

function zoomedFirst() {
  svgContainer.select(".x.axis").call(xAxis);
  svgContainer.selectAll(".y.axis.axisLeft").call(yAxisLeft);
  //set y2's scale manually
  svgContainer.select(".price")
    .attr("d", line1(priceData))
    .attr("class", "price");
  svgContainer.select(".difficulty")
    .attr("d", line2(difficultyData))
    .attr("class", "difficulty");
}

d3.behavior.zoom()支持 x 轴和 y 轴的自动缩放。但是,我必须同时缩放两个 y 轴。当 Zoom() 被触发时,我可以获得当前的scale and translate信息来自d3.event.scale and d3.event.translate,但我不知道如何为第二个 y 轴进行适当的缩放(y2) 跟他们。

我也在看https://github.com/mbostock/d3/wiki/Quantitative-Scales https://github.com/mbostock/d3/wiki/Quantitative-Scales.

Since y1的范围自动调整为zoom,如果有办法得到y1的当前范围,我可以获得它的最小值和最大值并设置y2的范围基于它们。但是,该文档没有指定获取方法range给定一个scale object.


Calling y1.range()(没有任何参数)将返回给你[min, max]的规模。

来自docs https://github.com/mbostock/d3/wiki/Quantitative-Scales#wiki-linear_range:

如果未指定值,则返回电子秤的当前输出范围。

D3 中的大多数访问器函数都是这样工作的,如果您在不带任何参数的情况下调用它们,它们会返回(获取)值;如果您使用参数调用它们并返回this易于链接的对象:

d3Object.propertyName = function (_) {
    if (!arguments.length) return propertyName;
    propertyName = _;
    return this;
}

但是,那zoom行为改变了domain而不是range的秤。

来自docs https://github.com/mbostock/d3/wiki/Zoom-Behavior#wiki-x:

指定缩放时应自动调整域的 x 比例。

因此,您不需要获取/设置range,而是domain秤的y1 and y2: y2.domain(y1.domain()).

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

d3js:有两个y轴时缩放 的相关文章

  • 无法在地图循环中访问 Axios 调用的值

    我有一个 javascript 对象 其 ID 对应于一组画廊 我使用地图循环遍历它 在每个循环中 我都会进行 axios 调用来获取当前 id 的图库 最后 我需要一个包含所有画廊内容的数组 问题是地图循环完成后我无法访问数据 当我 co
  • 在 javascript 原型事件处理程序中保留“this”引用[重复]

    这个问题在这里已经有答案了 正确的保存方法是什么this存储在对象原型内的事件处理程序中的 javascript 引用 我不想创建像 this 或 that 这样的临时变量 而且我不能使用像 jQuery 这样的框架 我看到很多人谈论使用
  • 为什么 useReducer 调度会导致重新渲染?

    假设我实现一个简单的全局加载状态 如下所示 hooks useLoading js import React createContext useContext useReducer from react const Context crea
  • Brunch 源映射:在 Chrome 开发工具中未命中断点

    我正在使用 Brunch 中内置的默认源映射 我看到文件很好 但无法在源映射文件中命中断点 使用 Javascript 访问调试器debugger 有效 这让我相信早午餐方面出了问题 这是我的 brunch config js module
  • 在 React 组件中等待异步函数并显示 Spinner

    初学者在这里 尝试从服务器获取一些数据并在获取后将其显示在我的反应组件中 但是 我在将异步函数集成到我的反应组件中时遇到了麻烦 import React useState from react import request from gra
  • 图表.js.如何更改“标签”数组的字体样式?

    我从 Chart JS 库中获取了一个图表 截屏 https i stack imgur com DnuRq png var ctx document getElementById myChart var data labels HTML
  • 网络上的等角柱状图

    我计划为游戏的标记 图钉 构建在线地图 但我无法设置标记的正确纬度 原始地图是一个2048 2048px 的正方形 然后我得到了标记 数千个 地图坐标使用 0 到 100 之间的 x y 表示法设置 0 0 是top left角和100 1
  • querySelector 搜索直接子级[重复]

    这个问题在这里已经有答案了 我有一些类似 jquery 的函数 function elem return gt someselector elem 问题是我怎样才能做同样的事情querySelector 问题是 gt 选择器中querySe
  • React Native 无法访问 Cloud Firestore 后端

    我之前使用的是 firebase 实时数据库 但现在想切换到 Cloud Firestore 但即使经过身份验证 也会收到以下错误 我目前正在使用 Android Simulator 尝试禁用我的实时数据库 但找不到解决方案 Firebas
  • 用更好的模式替换开关(Javascript)

    我必须升级我的应用程序以根据用户类型和角色属性显示页面 目前 我使用一个简单的 switch 语句来根据用户类型来执行此操作 例如 switch type case a return CONSTANT ONE case b return C
  • 为什么我可以使用 Date 对象进行数学运算? [复制]

    这个问题在这里已经有答案了 当我像这样减去两个日期对象时 const startTime new Date await someAsyncStuff const endTime new Date const elapsedTime endT
  • 为什么Promise中的代码会同步执行? [复制]

    这个问题在这里已经有答案了 在我的项目中 我有一个很长时间运行的操作 所以我决定将其放入Promise因为我认为这样我就可以在里面的代码继续执行其他操作Promise正在跑步 调试的时候发现外面的代码Promise仅当里面的代码执行Prom
  • 将默认搜索文本添加到搜索框 html

    我正在努力将 搜索 文本添加到搜索框 我正在努力实现 onfocus 消失文本 And onblur 重新出现文本 到目前为止 我已经实现了这一点 但我必须将其硬编码为 html eg
  • 如何让php页面从html页面接收ajax post

    我有一个非常简单的表单 其中有一个名字输入字段 我捕获了表单数据 并使用标准 jQuery 发布方法通过 ajax 将其传输到 PHP 页面 但是 我根本无法从 PHP 页面获得任何在服务器端捕获数据的响应 我不确定我做错了什么或缺少什么
  • 为什么 TypeScript 混合了模块和原型模式?

    我正在查看此页面上 TypeScript 生成的 JS 代码 http www typescriptlang org Playground http www typescriptlang org Playground 基本上 要创建一个Gr
  • chrome 选项卡/窗口中的 window.open 行为

    我有一小段 javascript 旨在打开两个或更多选项卡 这在 FF 和 IE 中工作正常 但 chrome 会在新窗口而不是选项卡中打开第二个窗口 它不依赖于 url 因为我已经尝试过使用两个相同的 url 第一个在选项卡中打开 第二个
  • D3 强制布局,较大的节点聚集在中心

    我一直在修改将用于标签云的强制布局 每个标签都由一个
  • 如何得知客户端从服务器的下载速度?

    根据客户的下载速度 我想以低质量或高质量显示视频 任何 Javascript 或 C 解决方案都是可以接受的 Thanks 没有任何办法可以确定 您只能测量向客户端发送数据的速度 如果没有来自客户端的任何类型的输入来表明其获取信息的速度 您
  • 从json中获取所有子节点

    我有以下 json var source k 01 k 02 children k 05 k 06 children k ABC k PQR k 07 k 03 我希望能够指定 k 的值并取回所有孩子 以及孙
  • YouTube 点击时禁用 HTML5

    有没有办法让我们通过javascript禁用HTML5视频的 播放 暂停 点击全屏 功能 然后在我们再次需要时将其放回去 我不知道你是否可以禁用它们 但你可以使用 css 删除它们 video webkit media controls f

随机推荐

  • 如何使用node.js生成excel文件?

    您好 我正在从数组中生成 excel 文件 但我没有成功 我正在使用 node js 工作 并且使用 npm 包生成 excel 文件 但我没有在 excel 文件中获取任何数据 excel 已生成 但未在我的文件中获取任何类型的数据 所以
  • 当 RStudio 中的 ioslides 的 type=HTML 时,调整 stargarzer 表的大小

    我刚开始使用 R Markdown 在 RStudio 中创建幻灯片演示文稿 我无法在网上找到任何可以解决我的具体问题的内容 这是close https stackoverflow com questions 15385696 how to
  • v8 中 Node.js 和 chrome 之间的区别

    镀铬版本 49 0 2623 110 m 节点 v5 10 0 这是我的代码 var a 0 function this a 1 this b 2 console log a console log a console log b 铬给出
  • dplyr 和 tidyr:将长格式转换为宽格式并排列列

    我正在创建一个shiny app用户将在其中上传包含多个变量的 csv 文件 使用dplyr 我会select前四个变量 如下所示 并将它们从长格式转换 DATA df lt read table text c Customer Rate
  • 更改绘图悬停框 R 的位置

    我想更改悬停框的位置plotly条形图 我希望它在栏上方弹出 而不是在左侧或右侧弹出 这可能吗 我一直在谷歌上搜索这个并盯着 Plotly R 参考页面几个小时 但没有运气 这是一个示例 library dplyr library plot
  • 在Oracle中使用SQL从3个表中选择数据

    我希望有人可以提供帮助 我是very这一切都是新的 我被困住了 我有 3 个表 我试图从中提取数据 顾客 custid 第一个 最后一个 积分俱乐部编号 调查编号 订单日期 订单总数 员工 empid 名字 姓氏 工资 销售额 销售日期 c
  • 简单的 REST URL 方案

    在我的网络应用程序中 我有一个user模型和一个journal and post模型 每个用户可以有多个日记 每个日记可以有多个帖子 下面是以 RESTful 方式表示这一点的最佳方式吗 profiles
  • EntityFramework Core 1.1.0 缺少 Include()? [复制]

    这个问题在这里已经有答案了 我正在使用 EntityFramework Core 1 1 0 我可以查询表并加载实体 但 Microsoft 的说明表明如果我想加载关系数据 我应该使用 Include 功能 https learn micr
  • php cURL 问题

  • 避免使用“抛出”构造函数进行堆分配

    说我有课Foo它没有定义默认构造函数并且throws在非默认构造函数中 初始化该类型的新对象时 我想捕获任何异常并返回 否则继续使用该对象 我注意到初始化这个对象 如果可能的话 很困难在堆栈上或通过使用共享指针 因为我试图避免管理内存 Fa
  • NuGet如何决定是否使用本地包缓存?

    今天 我在安装软件包时遇到了 NuGet 的奇怪行为 简要描述 作为我的构建脚本的结果 有一个 NuGet 包 我不会每次都更改版本 因此每个构建都会产生MyPackage 1 0 0 nupkg 作为构建的最后一步 我将包推送到部署在本地
  • mongodb按子字段查询

    如何查询全部 module B 以下查询不起作用 db XXX find id module B 万分感谢 数据如下 id module A date ISODate 2013 03 18T07 00 00Z value count 1 0
  • 如何在 Coq 中禁用我的自定义符号?

    我定义了一个符号来模拟命令式编程 Notation a gt gt b b a at level 50 然而之后 所有函数应用表达式都表示为 gt gt 样式 例如 在 Coq Toplevel 的证明模式下 我可以看到 bs nat gt
  • asp.net mvc 5实体框架6身份与信任级别=中等?

    创建最简单的项目 在 Visual Studio 2013 gt asp net Web 应用程序 gt 使用个人帐户进行 MVC 身份验证 它在本地主机上完美运行 但是 当发送到服务器 中等信任级别 时 当我尝试输入登录名时 该项目无法运
  • Nhibernate 错误:System.Data.SqlClient.SqlException:“索引”附近的语法不正确

    我有一个 nhibernate 解决方案 我正在尝试保存 但出现此错误 Test method HelloMusic Core Test CrudTests TestTrackAdd threw exception NHibernate E
  • Android 清单.xml

    我正在研究 Google Android 开发者网站 http developer android com resources tutorials views hello tabwidget html 中的选项卡示例 但我陷入了步骤 2 在
  • 在函数之间传递 BufReader/BufWriter 时,引用 BufReader/BufWriter 的惯用方法是什么?

    读完后std io BufReader https doc rust lang org std io struct BufReader html文档 我不知道如何最好地通过BufReader函数之间 允许多种排列 但哪种排列最好 我有一个需
  • Java打印字体拉伸

    我刚刚让打印机在 java 中工作 我也需要它 但是我需要解决最后一个问题 打印时 字体的宽度相当拉长 并不像应有的那样清晰 这是我在纸上实际绘图的代码 FontMetrics metrics graphics getFontMetrics
  • 如何找到iframe的xpath。下面是附图

    我需要在下图中找到 与您的搜索相关的品牌 文本 我如何编写 xpath 文本存在于没有 id 或类或没有唯一标识符的 iframe 中 我想使用跨度数据组件 id 找到它 但它不起作用 By xpath span data componen
  • d3js:有两个y轴时缩放

    参考 https github com mbostock d3 wiki Zoom Behavior https github com mbostock d3 wiki Zoom Behavior make zoom var zoomFir