我是D3.js的初学者。我需要根据下面的图像绘制一个带有轴的图形。任何工作小提琴都会对我有所帮助。
我检查过以下小提琴,但不确定如何根据我的要求进行调整。
答案 0 :(得分:0)
您可以创建比例(完全独立于轴)并使用其参数为轴创建svg元素;在您的情况下,水平线和圆+ +文本作为刻度。
具体来说,您可以使用比例range()
来获得水平线长度;并且比例ticks(n)
用于在比例域中获得n
均匀间隔的点。通过将这些点传递给刻度,您可以获得用于刻度线的x坐标。
xScale = d3.scale.linear().domain([0.0, 1.0]).range([0, width]);
var axis = svg.append('g').attr('class', 'xaxis');
axis.append('line').attr({
'x1': xScale.range()[0],
'y1': height,
'x2': xScale.range()[1],
'y2': height
});
ticks = axis.selectAll('.ticks')
.data(xScale.ticks(10))
.enter()
.append('g')
.attr('class', 'tick');
ticks.append('circle')
.attr({
'cx': function(d) { return xScale(d); },
'cy': height,
'r': 5
});
ticks.append('text')
.attr({
'x': function(d) { return xScale(d); },
'y': height,
'dy': 20 // Move the text a little under the line
})
.text(function(d) { return d; });
这是一个最小的工作JSFiddle:http://jsfiddle.net/LeartS/yGesr/