D3.js 在d3中的两个坐标之间画一条直线
我在d3中画了x轴和y轴D3.js 在d3中的两个坐标之间画一条直线,d3.js,D3.js,我在d3中画了x轴和y轴 var margin = {top: 20, right: 100, bottom: 30, left: 100}, width = 960 - margin.left - margin.right, height = 500 - margin.top - margin.bottom; var xScale = d3.scale.linear() .domain([0, 15]) .range([0, width]); var ySc
var margin = {top: 20, right: 100, bottom: 30, left: 100},
width = 960 - margin.left - margin.right,
height = 500 - margin.top - margin.bottom;
var xScale = d3.scale.linear()
.domain([0, 15])
.range([0, width]);
var yScale = d3.scale.linear()
.domain([0, 38])
.range([height, 0]);
var xAxis = d3.svg.axis()
.scale(xScale)
.orient("bottom")
.innerTickSize(-height)
.outerTickSize(0)
.tickPadding(10);
var yAxis = d3.svg.axis()
.scale(yScale)
.orient("left")
.innerTickSize(-width)
.outerTickSize(0)
.tickPadding(10);
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 + ")");
svg.append("g")
.attr("class", "x axis")
.attr("transform", "translate(0," + height + ")")
.call(xAxis);
svg.append("g")
.attr("class", "y axis")
.call(yAxis);
然后我想在这个网格中的两个点之间画一条线
svg.append('line')
.style('stroke', 'black')
.attr('x1', 5)
.attr('y1', 5)
.attr('x2', 20)
.attr('y2', 20);
下面是结果的一部分
因此,该线不会在栅格坐标(5,5)和(20,20)之间绘制
如何将线放置在已创建网格的坐标上?计算垂直轴的方式有问题 坐标 选中此项:
svg.append('line')
.style('stroke', 'black')
.attr('x1', 5)
.attr('y1', height -5 )
.attr('x2', 20)
.attr('y2', height - 20);
设置轴时,您正在使用
xScale
和yScale
。除了在内部用于生成刻度和刻度标签外,这些刻度还提供了在SVG坐标(刻度的范围)和网格(刻度的域)使用的坐标(即数据值)之间进行转换的简单方法
要绘制线,还需要将比例应用于数据值:
svg.append('line')
.style('stroke', 'black')
.attr('x1', xScale(5))
.attr('y1', yScale(5))
.attr('x2', xScale(20))
.attr('y2', yScale(20));