我正在用“点击次数”作为 Y 轴和“日期”作为 X 轴来绘制图表。由于数据量大,X轴杂乱无章,无法显示所有日期。我尝试使用 ticks(d3.time.months, 1) 和 tickFormat('%b %Y') 来消除一些刻度。当我运行代码时,我的数据出现“getMonth() is not defined”。
.tsv 文件:
date count
2013-01-01 4
2013-03-02 5
示例代码:
var x = d3.scale.ordinal()
.rangeRoundBands([0, width], .1, 0);
var xAxis = d3.svg.axis()
.scale(x)
.orient("bottom")
.ticks(d3.time.months, 1)
.tickFormat(d3.time.format('%b %Y'))
d3.tsv("data_Bar_Chart_Paino_Kristen.tsv", type, function(error, data) {
x.domain(data.map(function(d) { return d.date; }));
y.domain([0, d3.max(data, function(d) { return d.hits; })]);
var temp = height + 30; //+15
svg.append("g")
.attr("class", "x axis")
.attr("transform", "translate(-8," + temp + ")")
.call(xAxis);
svg.selectAll(".bar")
.data(data)
.enter().append("rect")
.attr("class", "bar")
.attr("x", function(d) { return x(d.date); })
.attr("width", x.rangeBand())
.attr("y", function(d) { return y(d.hits); })
.attr("height", function(d) {return height - y(d.hits); });
}
有没有办法解决我的问题并正确显示刻度?