Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.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
Javascript d3.js scaleBand()和#x27;滴答声从合适的地方传来_Javascript_D3.js - Fatal编程技术网

Javascript d3.js scaleBand()和#x27;滴答声从合适的地方传来

Javascript d3.js scaleBand()和#x27;滴答声从合适的地方传来,javascript,d3.js,Javascript,D3.js,我正在为条形图的x轴和y轴使用scaleBand()。由于某些原因,条形的高度介于y轴的刻度之间。我将感谢任何帮助。这是我的密码: var margin_ = { top: 20, right: 20, bottom: 30, left: 40 }, width_ = 960 - margin_.left - margin_.right, height_ = 500 - margin_.top - margin_.bottom; var svg_

我正在为条形图的x轴和y轴使用scaleBand()。由于某些原因,条形的高度介于y轴的刻度之间。我将感谢任何帮助。这是我的密码:

    var margin_ = { top: 20, right: 20, bottom: 30, left: 40 },
        width_ = 960 - margin_.left - margin_.right,
        height_ = 500 - margin_.top - margin_.bottom;

    var svg_ = d3.select("body").append("svg")
        .attr("width", width_ + margin_.left + margin_.right)
        .attr("height", height_ + margin_.top + margin_.bottom)
        .append("g")
        .attr("transform",
            "translate(" + margin_.left + "," + margin_.top + ")");


    var x = d3.scaleBand()
        .range([0, width_])
        .padding(0.2)

    var y = d3.scaleBand()
        .range([height_, 0]);


    x.domain(satisfactScaleKeyValues);
    y.domain(graphYvalues);


    svg_.selectAll(".bar")
        .data(datas)
        .enter().append("rect")
        .attr("class", "bar__")
        .attr("x", function (d) { return x(d.variable); })
        .attr("width", x.bandwidth())
        .attr("y", function (d) { return y(d.satisLevel); })
        .attr("height", function (d) { return height_ - y(d.satisLevel); });


    // add the x Axis
    svg_.append("g")
        .attr("transform", "translate(0," + height_ + ")")
        .call(d3.axisBottom(x));

    // add the y Axis
    svg_.append("g")
        .call(d3.axisLeft(y))

您应该使用d3.scalePoint,它可以更好地将有序域转换为范围上的线性点:

let data=[{variable:1,satisLevel:“Neutral”}]
var margin_uz={顶部:20,右侧:50,底部:30,左侧:75},
宽度=960-边距左-边距右,
高度=500-边距顶部-边距底部;
var svg_u3;d3.select(“body”).append(“svg”)
.attr(“宽度”,宽度+边距+左侧+右侧)
.attr(“高度”,高度+边距+顶部+边距+底部)
var g=svg_u2;.append(“g”)
.attr(“转换”,
“翻译(“+margin\uu0.left+”,“+margin\u0.top+”);
var x=d3.scaleBand()
.范围([0,宽度\])
.填充(0.2)
变量y=d3.scalePoint()
.范围([高度,0])
.填充(0.2)
x、 域([1]);
y、 域([“不满意”、“中立”、“满意”);
g、 选择全部(“.bar”)
.数据(数据)
.enter().append(“rect”)
.attr(“类”、“条”)
.attr(“x”,函数(d){返回x(d.variable);})
.attr(“宽度”,x.带宽())
.attr(“y”,函数(d){返回y(d.satisLevel);})
.attr(“高度”,函数(d){returnheight_u-y(d.satisLevel);});
//添加x轴
g、 附加(“g”)
.attr(“变换”、“平移(0)”+高度“+”)
.call(d3.axisBottom(x));
//添加y轴
g、 附加(“g”)
.call(d3.axisLeft(y))