D3.js 我怎样才能给这个径向簇直线而不是曲线?

D3.js 我怎样才能给这个径向簇直线而不是曲线?,d3.js,D3.js,D3是新手,文档不是很强,所以我只是举一些例子,但这需要花费太多时间。我发现一个()使用d3在网络图的不同嵌入之间进行转换。我想用直线而不是曲线来表示图,并且已经为树嵌入这样做了,但是我不知道如何将它应用到径向簇选项中 这是我添加的代码,用于替换树表示中的“diagonal()”,以给出直线而不是曲线,但不确定如何修改radialCluster var line = d3.svg.line() .x( d => d.lx ) .y( d

D3是新手,文档不是很强,所以我只是举一些例子,但这需要花费太多时间。我发现一个()使用d3在网络图的不同嵌入之间进行转换。我想用直线而不是曲线来表示图,并且已经为树嵌入这样做了,但是我不知道如何将它应用到径向簇选项中

这是我添加的代码,用于替换树表示中的“diagonal()”,以给出直线而不是曲线,但不确定如何修改radialCluster

var line = d3.svg.line()
             .x( d => d.lx )
             .y( d => d.ly );

function lineData(d){
    var points = [
        {lx: d.source.y, ly: d.source.x},
        {lx: d.target.y, ly: d.target.x}
    ];
    return line(points);
}
任何帮助都将不胜感激:)


ps.为什么没有一种方法可以只变换节点的位置(例如,形成径向簇),然后使用该数据简单地绘制关系?

遗憾的是,没有API,但从源代码看,我能够编写一个非常短的自定义链接函数,只在节点之间绘制一条直线

var宽度=500,
高度=500;
var直径=300;
var持续时间=2000年;
变量根;//将数据存储在所有函数都可以访问的变量中
var radialCluster=d3.layout.cluster()
.尺寸([360,直径/2])
.分离(功能(a、b){
返回(a.parent==b.parent?1:2)/a.depth;
});
var径向对角线=函数(d,i){
变量投影=函数(d){
//由于变换,0是中心,d.y表示距离
//从那个中心
var半径=d.y,
//减去90度,否则将留下0度,而不是顶部
角度=(d.x-90)/180*Math.PI;
返回[radius*Math.cos(角度),radius*Math.sin(角度)];
};
var points=[d.source,d.target].map(投影);
返回“M”+点[0]+“L”+点[1];
}
var line=d3.svg.line()
.x(d=>d.lx)
.y(d=>d.ly);
函数行数据(d){
变量点=[{
lx:d.source.y,
ly:d.source.x
},
{
lx:d.target.y,
李:d.target.x
}
];
返回线(点);
}
var svg=d3.选择(“正文”).追加(“svg”)
.attr(“宽度”,宽度)
.attr(“高度”,高度)
.附加(“g”)
.attr(“变换”、“平移”(+(宽度/2)+)”,“+
(高度/2)+“英寸”)
//设置适当的转换(svg中间的原点)
var root=getData(5),
节点=radialCluster.节点(根),
links=radialCluster.links(节点);
var link=svg.selectAll(“.link”)
.数据(链接)
.输入()
.append(“路径”)
.attr(“类”、“链接”)
.style(“笔划”、“8da0cb”)
.attr(“d”,径向对角线);
var node=svg.selectAll(“.node”)
.数据(节点)
.输入()
.附加(“g”)
.attr(“类”、“节点”)
.attr(“转换”,函数(d){
返回“旋转(“+(d.x-90)+”)平移(+d.y+”);
});
node.append(“圆”)
.attr(“r”,4.5)
.风格(“笔划”,“#e41a1c”);
函数getData(x){
返回三元树(x);
};
函数三元树生成(层){
//递归调用以生成子对象
让节点_子节点=[];
如果(图层>0){
对于(var i=1;i