Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
D3.js 如何在d3js中设置xaxis标签?_D3.js - Fatal编程技术网

D3.js 如何在d3js中设置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)

我是d3js的初学者。我想为xaxis创建一个带有自定义标签的条形图。我尝试了下面的代码,但它不起作用,我无法正确地看到xaxis的滴答声。请检查它,让我知道我的代码问题

         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相关,因此它不会单独显示条。我可以用另一个变量来解决这个问题,但这是正确的解决方案吗?