使用d3.js的javascript极坐标散点图

使用d3.js的javascript极坐标散点图,javascript,d3.js,svg,Javascript,D3.js,Svg,我试着做一个简单的极地散点图,像这样: 我找到了答案,但我无法显示点而不是d3.svg.line.radial。 如何将直线更改为点?如果使用d3.svg.line.radial()生成极坐标图,一个简单的解决方案是解析生成的路径以获得点坐标,然后在这些坐标处添加一个圆: var line = d3.svg.line.radial() .radius(function(d) { return r(d[1]); }) .angle(function(d) { retur

我试着做一个简单的极地散点图,像这样:

我找到了答案,但我无法显示点而不是d3.svg.line.radial。
如何将直线更改为点?

如果使用
d3.svg.line.radial()
生成极坐标图,一个简单的解决方案是解析生成的路径以获得点坐标,然后在这些坐标处添加一个圆:

var line = d3.svg.line.radial()
  .radius(function(d) {
    return r(d[1]);
  })
  .angle(function(d) {
    return -d[0] + Math.PI / 2;
  });

svg.selectAll("point")
  .data(data)
  .enter()
  .append("circle")
  .attr("class", "point")
  .attr("transform", function(d) {
    // use the line function and parse out the coordinates
    var coors = line([d]).slice(1).slice(0, -1);
    return "translate(" + coors + ")"
  })
  .attr("r", 8);
下面是一个完整的工作示例:


.框架{
填充:无;
行程:#000;
}
.轴文本{
字体:10px无衬线;
}
.轴线,
.轴圆{
填充:无;
笔画:钢蓝;
行程数组:4;
}
.轴:圆的最后一个类型{
笔画:钢蓝;
笔划数组:无;
}
.线路{
填充:无;
笔画:橙色;
笔画宽度:3px;
}
可变宽度=960,
高度=500,
半径=数学最小值(宽度、高度)/2-30;
var r=d3.scale.linear()
.domain([0,1])
.范围([0,半径]);
var line=d3.svg.line.radial()
.半径(功能(d){
返回r(d[1]);
})
.角度(功能(d){
return-d[0]+Math.PI/2;
});
var svg=d3.选择(“正文”).追加(“svg”)
.attr(“宽度”,宽度)
.attr(“高度”,高度)
.附加(“g”)
.attr(“变换”、“平移”(+width/2+)、“+height/2+”);
var gr=svg.append(“g”)
.attr(“类”、“r轴”)
.全选(“g”)
.数据(r.记号(3).切片(1))
.enter().append(“g”);
gr.append(“圆圈”)
.attr(“r”,r);
var ga=svg.append(“g”)
.attr(“类”、“a轴”)
.全选(“g”)
.数据(d3.范围(0,360,30))
.enter().append(“g”)
.attr(“转换”,函数(d){
返回“旋转(“+-d+”);
});
ga.append(“行”)
.attr(“x2”,半径);
var color=d3.scale.category20();
var line=d3.svg.line.radial()
.半径(功能(d){
返回r(d[1]);
})
.角度(功能(d){
return-d[0]+Math.PI/2;
});
风险值数据=[
[Math.PI/3,Math.random(),
[Math.PI/6,Math.random(),
[0*Math.PI,Math.random()],
[(11*Math.PI)/6,Math.random(),
[(5*Math.PI/3),Math.random(),
[(3*Math.PI)/2,Math.random(),
[(4*Math.PI/3),Math.random(),
[(7*Math.PI)/6,Math.random(),
[Math.PI,Math.random()],
[(5*Math.PI)/6,Math.random(),
[(2*Math.PI)/3,Math.random(),
[Math.PI/2,Math.random()]
]
svg.selectAll(“点”)
.数据(数据)
.输入()
.附加(“圆圈”)
.attr(“类”、“点”)
.attr(“转换”,函数(d){
var coors=直线([d])。切片(1)。切片(0,-1);
返回“translate(“+coors+”)
})
.attr(“r”,8)
.attr(“填充”,函数(d,i){
返回颜色(i);
});

您能否发布代码,让用户了解问题,谢谢。这正是我想要的