D3.js 如何在d3js中设置xaxis标签?
我是d3js的初学者。我想为xaxis创建一个带有自定义标签的条形图。我尝试了下面的代码,但它不起作用,我无法正确地看到xaxis的滴答声。请检查它,让我知道我的代码问题D3.js 如何在d3js中设置xaxis标签?,d3.js,D3.js,我是d3js的初学者。我想为xaxis创建一个带有自定义标签的条形图。我尝试了下面的代码,但它不起作用,我无法正确地看到xaxis的滴答声。请检查它,让我知道我的代码问题 dataset = [10, 15, 34, 16, 47, 98, 53] var svg = d3.select(".activecounts") .append("svg") .attr("width", width)
dataset = [10, 15, 34, 16, 47, 98, 53]
var svg = d3.select(".activecounts")
.append("svg")
.attr("width", width)
.attr("height", height);
var padding = {
left: 30,
right: 30,
top: 20,
bottom: 20
};
var xScale = d3.scaleBand()
.domain(["a", "b", "c", "d", "e", "f", "g"])
.range([0, width - padding.left - padding.right]);
var yScale = d3.scaleLinear()
.domain([0, d3.max(dataset)])
.range([height - padding.top - padding.bottom, 10]);
var xAxis = d3.axisBottom()
.scale(xScale)
var yAxis = d3.axisLeft()
.scale(yScale)
var rectPadding = 4;
var rects = svg.selectAll(".MyRect")
.data(dataset)
.enter()
.append("rect")
.attr("class", "MyRect")
.attr("transform", "translate(" + padding.left + "," + padding.top + ")")
.attr("x", function(d, i) {
return xScale(i) + rectPadding / 2;
})
.attr("y", function(d) {
return yScale(d);
})
.attr("width", xScale.bandwidth() - rectPadding)
.attr("height", function(d) {
return height - padding.top - padding.bottom - yScale(d);
});
var texts = svg.selectAll(".MyText")
.data(dataset)
.enter()
.append("text")
.attr("class", "MyText")
.attr("transform", "translate(" + padding.left + "," + padding.top + ")")
.attr("x", function(d, i) {
return xScale(i) + rectPadding / 2;
})
.attr("y", function(d) {
return yScale(d);
})
.attr("dx", function() {
return (xScale.bandwidth() - rectPadding) / 2;
})
.attr("dy", function(d) {
return -10;
})
.text(function(d) {
return d;
});
svg.append("g")
.attr("class", "axis")
.attr("transform", "translate(" + padding.left + "," + (height - padding.bottom) + ")")
.call(xAxis);
svg.append("g")
.attr("class", "axis")
.attr("transform", "translate(" + padding.left + "," + padding.top + ")")
.call(yAxis);
请检查一下,让我知道我的错。我更新了上面的代码以显示我是如何制作条形图的。请检查它,如果需要进一步澄清,请告诉我。如果没有有效的代码片段,很难找到问题。可能只是定义了xScale,但没有调用它。下面是一个工作示例,希望对您有所帮助:
var svg=d3
.选择(“正文”)
.append(“svg”)
.attr(“宽度”,200)
.attr(“高度”,100)
var xScale=d3.scaleBand()
.域名([“a”、“b”、“c”、“d”、“e”、“f”、“g”])
.范围([0200]);
svg
.附加(“g”)
.attr(“变换”、“平移(0,80)”)
.call(d3.axisBottom(xScale))代码>
没有人知道这里的问题是什么,添加一个有效的代码片段将有助于解决您的问题。@Ma'mounothman,我更新了代码。请检查它,它的工作原理与我的一样,但问题是,由于中的条的位置与xScale相关,因此它不会单独显示条。我可以用另一个变量来解决这个问题,但这是正确的解决方案吗?