D3.js scaleLinear-domain-range 函数原生js实现

本文介绍了D3.js中的scaleLinear比例尺生成函数,包括其domain和range的原理,并提供了使用原生JavaScript实现该功能的方法,通过实例进行详细讲解和测试。
摘要由CSDN通过智能技术生成

1.d3比例尺生成函数

/**
*生成一个比例尺函数输入value返回对应的平面像素
*/
let scaleLinear = d3.scaleLinear()
                 .domain([minDomain,maxDomain])
                 .range([minPixel,maxPixel]);

let x = scaleLinear(value);

2.实现 

  /**
   * 平面坐标范围值转区间像素函数
   * @param value 数值
   * @param minDomain 最小值
   * @param maxDomain 最大值
   * @param minPixel 起始像素
   * @param maxPixel 结束像素
   * @returns {*} value对应的像素值
   */
  function mapValueToPixel(value, minDomain, maxDomain, minPixel, maxPixel) {
    return (Math.round((value - minDomain) / (maxDomain - minDomain) * (maxPixel - minPixel))) + minPixel;
  }

//实现过程👇

//⭐1 (value - minDomain) = 当前值到原点的距离 a

//⭐2 (maxDomain - minDomain) = 最大值到原点的距离 b

//⭐3 (maxPixel - minPixel) = 平面坐标跨度width c

//⭐4 (a/b) * c = 得到映射的长度 d

//⭐5 最后 将d加上原点minPixel 得到实际像素值

3.测试 


let linerScale = d3.scaleLinear()
    .domain([-100, 100])
    .range([-100, 200]);


console.log(linerScale(50))  
//输出125

console.log(mapValueToPixel(50, -100, 100, -100, 200)) 
//输出125

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值