|
45 | 45 | var x = points.dimensions().get('x'),
|
46 | 46 | y = points.dimensions().get('y');
|
47 | 47 |
|
48 |
| - var g = selection |
49 |
| - .attr("width", +width()) |
50 |
| - .attr("height", +height()) |
51 |
| - .append("g"); |
52 |
| - |
53 | 48 | //define margins
|
54 | 49 | var margin = {
|
55 |
| - top: 0, |
56 |
| - right: 0, |
57 |
| - bottom: 20, |
| 50 | + top: +maxRadius(), |
| 51 | + right: +maxRadius(), |
| 52 | + bottom: 20 + maxRadius(), |
58 | 53 | left: marginLeft()
|
59 | 54 | };
|
60 | 55 |
|
61 |
| - var w = width() - margin.left, |
62 |
| - h = height() - margin.bottom; |
| 56 | + var w = width() - margin.left - margin.right, |
| 57 | + h = height() - margin.bottom - margin.top; |
| 58 | + |
| 59 | + var g = selection |
| 60 | + .attr("width", +width()) |
| 61 | + .attr("height", +height()) |
| 62 | + .append("g") |
| 63 | + .attr('transform','translate(' + margin.left + ',' + margin.top + ')') |
63 | 64 |
|
64 | 65 | var xExtent = !useZero() ? d3.extent(data, d => {
|
65 | 66 | return d.x;
|
|
73 | 74 | })];
|
74 | 75 |
|
75 | 76 | var xScale = x.type() == "Date" ?
|
76 |
| - d3.scaleTime().range([margin.left, width() - maxRadius()]).domain(xExtent) : |
77 |
| - d3.scaleLinear().range([margin.left, width() - maxRadius()]).domain(xExtent), |
| 77 | + d3.scaleTime().range([0, w]).domain(xExtent) : |
| 78 | + d3.scaleLinear().range([0, w]).domain(xExtent), |
78 | 79 | yScale = y.type() == "Date" ?
|
79 |
| - d3.scaleTime().range([h - maxRadius(), maxRadius()]).domain(yExtent) : |
80 |
| - d3.scaleLinear().range([h - maxRadius(), maxRadius()]).domain(yExtent), |
81 |
| - sizeScale = d3.scaleLinear().range([1, Math.pow(+maxRadius(), 2) * Math.PI]).domain([0, d3.max(data, d => { |
82 |
| - return d.size; |
83 |
| - })]), |
84 |
| - xAxis = d3.axisBottom(xScale).tickSize(-h + maxRadius() * 2) //.tickSubdivide(true), |
85 |
| - yAxis = d3.axisLeft(yScale).ticks(10).tickSize(-w + maxRadius()); |
| 80 | + d3.scaleTime().range([h, 0]).domain(yExtent) : |
| 81 | + d3.scaleLinear().range([h, 0]).domain(yExtent), |
| 82 | + sizeScale = d3.scaleSqrt().range([1, +maxRadius()]) |
| 83 | + .domain([0, d3.max(data, d => { |
| 84 | + return d.size; |
| 85 | + })]), |
| 86 | + xAxis = d3.axisBottom(xScale).tickSize(-h) //.tickSubdivide(true), |
| 87 | + yAxis = d3.axisLeft(yScale).ticks(10).tickSize(-w); |
86 | 88 |
|
87 | 89 | g.append("g")
|
88 | 90 | .attr("class", "x axis")
|
89 | 91 | .style("stroke-width", "1px")
|
90 | 92 | .style("font-size", "10px")
|
91 | 93 | .style("font-family", "Arial, Helvetica")
|
92 |
| - .attr("transform", `translate(0, ${h - maxRadius()})`) |
| 94 | + //.attr("transform", `translate(0, ${h - maxRadius()})`) |
| 95 | + .attr('transform', 'translate(0,' + h + ')') |
93 | 96 | .call(xAxis);
|
94 | 97 |
|
95 | 98 | g.append("g")
|
96 | 99 | .attr("class", "y axis")
|
97 | 100 | .style("stroke-width", "1px")
|
98 | 101 | .style("font-size", "10px")
|
99 | 102 | .style("font-family", "Arial, Helvetica")
|
100 |
| - .attr("transform", `translate(${margin.left}, 0)`) |
| 103 | + //.attr("transform", `translate(${margin.left}, 0)`) |
101 | 104 | .call(yAxis);
|
102 | 105 |
|
103 | 106 | d3.selectAll(".y.axis line, .x.axis line, .y.axis path, .x.axis path")
|
|
128 | 131 | return `translate(${xScale(d.x)}, ${yScale(d.y)})`;
|
129 | 132 | })
|
130 | 133 | .attr("r", d => {
|
131 |
| - return Math.sqrt(sizeScale(d.size) / Math.PI); |
| 134 | + return sizeScale(d.size); |
132 | 135 | });
|
133 | 136 |
|
134 | 137 | point.append("circle")
|
|
0 commit comments