막대 그래프를 그릴 때 d3 js를 사용하고 있습니다. x 축과 y 축도 있습니다. x 축에는 '이름'이 있고 y 축에는 '표시'가 있습니다. 나는 x 축에 서수 척도를 사용하고있다.d3에서 막대 그래프의 축과 직사각형 틱의 정렬이 잘못되었습니다.
내 json 입력 dataset_rule_errors에는 10 개의 항목이 있습니다. 내 코드는 내가 직면하고 문제는 내 사각형과 x 축의 진드기가 서로 일치하지 않는다는 것이다
var svgd = d3.select("body")
.append("svg")
.attr("width", width)
.attr("height", height);
var x_domain = dataset_rule_errors.map(function(d) { return d.Rulename; })
var xScale = d3.scale.ordinal()
.domain(dataset_rule_errors.map(function (d) { return d.Rulename; }))
.rangeBands([padding_rule, wsvg]);
var xaxeScale = d3.scale.ordinal()
.domain(x_domain)
.rangePoints([padding_rule, wsvg]);
var xAxis = d3.svg.axis()
.scale(xaxeScale)
.tickValues(x_domain)
.orient("bottom");
//drawing rectangles
svgd.append("g")
.selectAll("rect") //based on the data in the dataset[] array, append rectangles s.t.
.data(dataset_rule_errors) //
.enter()
.append("rect")
.attr("x", function (d, i) {
return xScale(d.Rulename); // x position of rect as per i->0,1,2,3,...
})
.attr("y", function (d) {
return (h_rule - yScale(d.NumRuleFailed)); //y position of rect as per (h-value) to prevent inverted range
})
.attr("width", xScale.rangeBand())//"10") //depending upon domain->no of inputs - with of band is decided acc. to fit in svg
.attr("height", function (d) {
return yScale(d.NumRuleFailed); //depending upon domain->value of inputs - with of band is decided acc. to fit in svg
})
.attr("fill", function (d, i) { //colour based on values -> more errors - dark coloured bars
if(i%2==0)
return "rgb(" + 255 + "," + 255 + "," + 200 + ")";
else
return "rgb(" + 0 + "," + 0 + "," + 200 + ")";
})
.attr("stroke", "black");
//drawing x axis with ticks
svgd.append("g")
.attr("class", "x axis")
.attr("transform", "translate(" + 0 + "," + (h_rule) + ")")
.call(xAxis)
.selectAll("text")
.style("text-anchor", "end")
.attr("dx", "-.8em")
.attr("dy", ".15em")
.attr("text-anchor", "start")
.attr("transform", function (d) {
return "rotate(-90)"
})
.selectAll(".tick text")
.style("text-anchor", "start");
입니다.
왜냐하면 저는 10 개의 막대가 있기 때문에 시작과 끝의 막대를 포함하여 11 개의 틱이 있어야합니다. 하지만 나는 축 길이에 따라 균등하게 분포하는 10 개의 틱만 가지고 있으므로이 질문과 마찬가지로 사각형 시작과 일치하지 않습니다. Unable to align ticks with d3.js.
하지만이 질문에 대한 해결책은 나에게 도움이되지 못했습니다. 내가 무엇을 할 수 있을지?
dataset_rule_errors의 = 데이터는 내 데이터베이스
[{"Rulename":"A","NumRuleFailed":34321},{"Rulename":"B","NumRuleFailed":43},{"Rulename":"C","NumRuleFailed":45522},
{"Rulename":"D","NumRuleFailed":43643},{"Rulename":"E","NumRuleFailed":152},{"Rulename":"F","NumRuleFailed":152}]
당신이 구조를 제공 할 수 있습니다 'dataset_rule_errors'의 예는 무엇입니까? – torresomar
안녕하세요, 질문을 수정했습니다 –