d3.js使用rangeBands进行不均匀缩放

时间:2014-07-23 18:32:12

标签: javascript d3.js

我试图绘制带宽不均匀的序数轴。我知道有一种方法可以按照指定here使用范围来实现,但它似乎不适用于rangeBands或rangeRoundBands。

var letters = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m"];
var custom_range = [0, 19, 78, 97, 116, 135, 154, 173, 192, 211, 230, 249, 268];

var y_scale = d3.scale.ordinal().domain(letters).rangeRoundBands(custom_range);

console.log(y_scale.range());

得到的比例是:

[3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]

如何使用rangeBands或rangeRoundBands实现自定义范围?我尝试使用范围,但它没有按照我需要的方式绘制轴。

感谢。

1 个答案:

答案 0 :(得分:1)

让我详细说明Lars'回答......呃..我的意思是评论。

您的范围将被划分为n个宽度,每个宽度(范围的大小/频带的数量= n),其中n是给定数据集内的数据的数量。因此,如果您有100px和10个数据,那么您将拥有100px / 10 datum = 10px宽条。这就是为什么"你不能拥有宽度不均匀的乐队" - Lars< 3

您可以在此处详细了解rangeBands和rangeRoundBands: https://github.com/mbostock/d3/wiki/Ordinal-Scales#ordinal_rangeBands