D3:单击散点图中的圆时添加一条线
D3: adding a line when clicking on a circle in scatter plot
我有一个散点图。现在,如果我单击其中一个点,如何生成一条通过该点的线?
我被困在两个地方:
- 使用以下代码,为什么现在显示我的行?
<!DOCTYPE html> <meta charset="utf-8"> <body> <script src="d3.min.js"></script> <script> var width = 500, height = 500; var randomX=[], randomY=[]; for (var i=0; i<=50; i++) { randomX[i] = Math.random()*400; randomY[i] = Math.random()*400;}
var data = randomX.concat(randomY); var x = d3.scale.linear() .domain([0, d3.max(randomX)]) .range([0, width]);
var y = d3.scale.linear() .domain([0, d3.max(randomY)]) .range([height, 0]);
var svg = d3.select("body").append("svg") .attr("width", width) .attr("height", height) .append("g");
svg.selectAll("scatter-dots") .data(randomY) .enter().append("svg:circle") .attr("cy", function(d) {return y(d); } ) .attr("cx", function(d,i) {return x(randomX[i]); } ) .style("fill", "brown") .attr("r", 5) .on("click", function(d,i) { d3.select(this) .append("svg:line") .attr("x1", 300).attr("y1", 300) .attr("x2", 50).attr("y2", 50) .style("stroke", "steelblue") .style("stroke-width", 3); }); </script> - 我点击的点的坐标存储在哪里?我尝试了
this.cx
和this.cy
,但他们都没有给我实际的坐标。
首先,您需要将line
元素附加到顶级 SVG 或 g
元素,而不是 circle
元素,否则不会显示。因此,在单击处理程序中,您需要执行以下操作:
.on("click", function(d,i) {
svg.append("svg:line")
.attr("x1", 300).attr("y1", 300)
.attr("x2", 50).attr("y2", 50)
.style("stroke", "steelblue")
.style("stroke-width", 3);
});
您可以通过d3.event
或圆本身的坐标获取单击的坐标,即
.on("click", function(d,i) {
var x = x(randomX[i]),
y = y(d);
});
甚至
.on("click", function(d,i) {
var x = d3.select(this).attr("cx"),
y = d3.select(this).attr("cy");
});
相关文章:
- fluxxor向一个flux实例添加一组以上的操作
- 在地图上画一条路线
- 在窗口中添加滚动条
- 在d3中拖动一条线
- 我确实有一个表单,如果用户输入了输入,它应该检查否定或空的输入框,并抛出一条警告消息
- 我正在创建一个聊天,但每次我发送消息时,它都不会让我再发送另一条消息,就像表格一样;不起作用
- 当我的条件为true时,显示一条弹出消息
- 如何在javascript中的if或else块中运行一条jsp语句
- 向函数添加多条语句
- Highcharts为BoxPlot图表添加了一条Mean线
- 添加一条规则以将前导0删除到现有正则表达式中
- 在sharepoint页面中的静态行上添加一条水平线
- 有没有办法使用 classList 在一条指令中添加/删除多个类
- D3.js 折线和面积图 - 想要添加一条由两点定义并表示阈值/最小值的额外线(以便于查看)
- 为yeoman angular fullstack添加一条新的路由会破坏它
- D3图表:在没有日期值的日期图表中添加一条线
- Laravel foreach的create方法将只添加一条记录
- D3:单击散点图中的圆时添加一条线
- 在画布JS中添加一条水平线
- EaselJS -是否可以添加一个模糊滤镜到一条线