我以「點擊次數」爲Y軸,「日期」爲X軸繪製圖形。由於數據量大,X軸混亂,無法顯示所有日期。我試圖使用ticks(d3.time.months,1)和tickFormat('%b%Y')來消除一些ticks。當我運行代碼時,我的數據「getMonth()未定義」。D3中的格式刻度
.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); });
}
有沒有解決我的問題的方式和顯示刻度線是否正確?
您是先解析日期嗎? –
@AdamPearce是的,我首先解析了x軸,它是日期。 – whileone
您需要使用時間刻度來使用這種刻度格式,即'd3.time.scale'。 –