2017-10-14 7 views
2

데이터 배열에 더미 데이터가 있습니다. 거기에서 분산 형 그림을 만들고 싶습니다. 순위는 y 축에 표시되고 admit_probability는 x 축에 표시됩니다. 나는 가지고있는 모든 5 점을 찾을 수 있지만 축은 모서리에서 불완전합니다. 내가 가진 스크립트는 다음과 같습니다 : 내가이에서 무엇입니까하는 것은 같은 링크 scatter plot에 표시됩니다d3js에서 X 축과 Y 축이 잘리지 않습니다.

var margin = {top: 30, right: 20, bottom: 30, left: 50}, 
width = 600 - margin.left - margin.right, 
height = 270 - margin.top - margin.bottom; 

var data = [{"admit_probability":54,"rank":20}, 
      {"admit_probability":79,"rank":111}, 
      {"admit_probability":70,"rank":68}, 
      {"admit_probability":12,"rank":1}, 
      {"admit_probability":197,"rank":87}]; 

var xscale = d3.scaleLinear() 
       .domain(d3.extent(data, function(d) { return +d.admit_probability; })) 
       .range([0, width]); 

var yscale = d3.scaleLinear() 
       .domain(d3.extent(data, function(d) { return +d.rank; })) 
       .range([height, 0]); 

var xAxis = d3.axisBottom().scale(xscale); 

var yAxis = d3.axisLeft().scale(yscale); 

var svg = d3.select("#content-box") 
    .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 + ")"); 

svg.selectAll("dot") 
    .data(data) 
    .enter().append("circle") 
    .attr("r", 3.5) 
    .attr("cx", function(d) { return xscale(+d.admit_probability); }) 
    .attr("cy", function(d) { return yscale(+d.rank); }); 

    svg.append("g")   
    .attr("class", "x axis") 
    .attr("transform", "translate(0," + height + ")") 
    .call(xAxis); 


svg.append("text") 
    .attr("transform", "translate(" + (width/2) + " ," + (height + margin.bottom) + ")") 
    .style("text-anchor", "middle") 
    .text("Average Acceptance"); 

svg.append("g")   
    .attr("class", "y axis") 
    .call(yAxis); 

// Add the text label for the Y axis 
svg.append("text") 
    .attr("transform", "rotate(-90)") 
    .attr("y", 0 - margin.left) 
    .attr("x",0 - (height/2)) 
    .attr("dy", "1em") 
    .style("text-anchor", "middle") 
    .text("Rank"); 

. 축이 끝에서 절단됩니다. 친절하게 누군가 도움이됩니다. 나는 그 문제를 이해할 수 없다.

+0

"축이 끝에서 끊어지고있다"는 것을 나는 이해하지 못한다. "평균 수용"이라는 글자의 맨 아래를 가리키고 있습니까? 아니면 축의 가장자리에 큰 간격을두고 데이터 포인트가 가장자리에 있지 않도록하려면? – Mark

+0

내가 추가 한 링크를 보면 가장 오른쪽 지점에 x 축에 언급 된 것이 없습니다. 작은 진드기가 있지만 가치는 없습니다. 마찬가지로 y-aix의 가장 높은 지점에 대해서도 마찬가지입니다. 보이지 않는 축에 더 많은 숫자가있는 것처럼 느껴집니다. 이 말을하는 것이 맞습니까? 나는 이것에 초보적이다. – Yesha

답변

1

당신은 예를

var xscale = d3.scaleLinear() 
       .domain(d3.extent(data, function(d) { return +d.admit_probability; })).nice() 
       .range([0, width]); 

var yscale = d3.scaleLinear() 
       .domain(d3.extent(data, function(d) { return +d.rank; })).nice() 
       .range([height, 0]); 

enter image description here

를 들어, 숫자를 반올림/아래 최소/최대 값을 반올림하여 도메인에 더 좋은 확장을 생성하려고 저울의 도메인에 .nice()를 시도 할 수 있습니다
+0

고마워. 그것은 효과가있다! – Yesha