美文网首页强力无比D3.js
d3.scaleBand()函数中关于padding和bandw

d3.scaleBand()函数中关于padding和bandw

作者: 大海龟啦啦啦 | 来源:发表于2021-01-12 12:42 被阅读0次

    首先,我们要知道这个d3.scaleBand()是将散点分布来进行比例尺的放缩,.domain()中是一个数组,而不是一个范围,但是.range()中的是一个范围,一个区域。
    而对我来说这个d3.scaleBand()中最重要的,就是这个bandwidth问题,因为我需要用这个来画一些能动态导入数据的图,而且需要在两个柱子之间插入连线,因此需要非常准确的计算这个bandwidth的数值。
    具体可以参考https://github.com/d3/d3-scale/blob/v3.2.2/README.md#scaleBandhttps://observablehq.com/@d3/d3-scaleband这两个网址,可以查看其他参数的用法。
    第二个页面中也有关于这个bandwidth的介绍,但是讲的有点笼统,具体一点的算法如下:

    如上图所示,我们可以对这些高度进行定义,为了解释清楚,特意将paddingOuter设置为0:

    h = 我们的整个用来画这个柱状图的高度
    bandwidth = 一个柱子的高度
    step = 将柱子高度和空出来的加起来
    step × paddingInner = 柱子中间空出来的高度
    n = 柱子数量
    

    由图可以很明显的看出来,我们可以有

    h = step × (n - paddingInner)
    step = h / (n - paddingInner)
    bandwidth = h / (n - paddingInner) × (1 - paddingInner)
    

    由此我们可以计算出我们每一个柱子所在的高度(y值大小)及其边缘所在位置的高度(y值大小)
    对于其他的比如paddingOuter和align可以参考上面的第二个网址进行学习。

    相关文章

      网友评论

        本文标题:d3.scaleBand()函数中关于padding和bandw

        本文链接:https://www.haomeiwen.com/subject/jnmsaktx.html