我正在 d3.js 中构建一个条形图,其中每个条形代表一个月内的总 TB 病例。数据本质上由一个日期(最初是 %Y-%m 格式的字符串,但使用 d3.time.format.parse 解析)和一个整数组成。我希望轴标签相对灵活(仅显示年份边界、每个月标签等),但我也希望条形间隔均匀。
当我使用日期刻度时,我可以获得灵活的轴标签:
var xScaleDate = d3.time.scale()
.domain(d3.extent(thisstat, function(d) { return d.date; }))
.range([0, width - margin.left - margin.right]);
...但由于每个月的天数不同(例如,2 月和 3 月明显比其他月份更靠近),条形图的间距并不均匀。我可以使用线性比例得到均匀间隔的条:
var xScaleLinear = d3.scale.linear()
.domain([0, thisstat.length])
.range([0, width - margin.left - margin.right]);
...但我不知道如何拥有基于日期的轴标签。我尝试过同时使用两个刻度,并且只从 生成一个轴xScaleDate
,只是为了看看会发生什么,但是刻度自然不会完全对齐。
有没有一种直接的方法可以实现我所缺少的?