x 轴上日期的奇怪间距 (D3)
Strange spacing of dates on x-axis (D3)
我正在尝试使用 [datetime,value]
形式的数据点数组创建一个简单的柱形图,例如 [1422345600000,146]
。我想每隔几天用带有标记的刻度的 x 轴上的日期绘制这些。我几乎设法做到了这一点,但前几个滴答声奇怪地间隔在一起。
你可以在这里看到:http://jsfiddle.net/9r4fqbnm/2/
我试过了
var xAxis = d3.svg.axis()
.scale(x)
.orient('bottom')
.ticks(d3.time.days,7)
.tickFormat(d3.time.format("%m/%d/%Y"))
并且前两个刻度之后的刻度确实间隔了 7 天。
我没有在网上找到这个问题——我是不是遗漏了什么明显的东西?
谢谢
你的问题是你的数据数组。我懒得深入研究每个值并查看哪个是罪魁祸首,但基本上是通过将其转换为人类可读的格式并确保值有效 - 解决了问题:
function getDate(y, m, d) {
return new Date(y, m, d);
}
var data = [
[getDate(2015, 1, 27), 146], [getDate(2015, 1, 28), 132], ..., [getDate(2015, 2, 24), 67], [getDate(2015, 2, 25), 46]
];
var startDate = data[0][0];
var endDate = data[data.length - 1][0];
...
我正在尝试使用 [datetime,value]
形式的数据点数组创建一个简单的柱形图,例如 [1422345600000,146]
。我想每隔几天用带有标记的刻度的 x 轴上的日期绘制这些。我几乎设法做到了这一点,但前几个滴答声奇怪地间隔在一起。
你可以在这里看到:http://jsfiddle.net/9r4fqbnm/2/
我试过了
var xAxis = d3.svg.axis()
.scale(x)
.orient('bottom')
.ticks(d3.time.days,7)
.tickFormat(d3.time.format("%m/%d/%Y"))
并且前两个刻度之后的刻度确实间隔了 7 天。
我没有在网上找到这个问题——我是不是遗漏了什么明显的东西?
谢谢
你的问题是你的数据数组。我懒得深入研究每个值并查看哪个是罪魁祸首,但基本上是通过将其转换为人类可读的格式并确保值有效 - 解决了问题:
function getDate(y, m, d) {
return new Date(y, m, d);
}
var data = [
[getDate(2015, 1, 27), 146], [getDate(2015, 1, 28), 132], ..., [getDate(2015, 2, 24), 67], [getDate(2015, 2, 25), 46]
];
var startDate = data[0][0];
var endDate = data[data.length - 1][0];
...