美文网首页强力无比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