javascript – D3强制布局:链接的直线而不是曲线(但仅适用于某些链接)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – D3强制布局:链接的直线而不是曲线(但仅适用于某些链接),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1042字,纯文字阅读大概需要2分钟。
内容图文
![javascript – D3强制布局:链接的直线而不是曲线(但仅适用于某些链接)](/upload/InfoBanner/zyjiaocheng/804/706ec4788f2e4bce96609a5408314b06.jpg)
我有这个D3 jsfiddle产生以下图表:
困扰我的唯一问题是,如果两个节点之间只有一个链接,则将其绘制为曲线.我认为如果这样的链接只是直线会更好(箭头就可以了).让我们说微软和亚马逊之间应该只是一条直线(带箭头).甲骨文与谷歌,索尼和LG等同样如此.
怎么做到这一点?
解决方法:
这很容易.在linkArc(d)方法中,如果只有1个子节点,则将dr参数设置为0;如果有更多子节点,则将其设置为默认值.这样,节点之间就不会有任何曲线.
但是,第一步是确定有多少邻居.在您从链接定义节点之后,一种简单的方法就像下面这样,尽管它不是最佳的.
links.forEach(function(d) {
if (nodes[d.source.name].children==undefined) {
nodes[d.source.name].children=0;
}
nodes[d.source.name].children++
});
完成后,您可以按如下方式调整线条的曲线:
function linkArc(d) {
var dx = d.target.x - d.source.x,
dy = d.target.y - d.source.y,
dr = (nodes[d.target.name].children>1 & nodes[d.source.name].children>1)?Math.sqrt(dx * dx + dy * dy):0;
return "M" + d.source.x + "," + d.source.y + "A" + dr + "," + dr + " 0 0,1 " + d.target.x + "," + d.target.y;
}
结果将是这样的:
我相信有更好的方法可以解决这个问题,但这是一个开始.
希望这可以帮助.
内容总结
以上是互联网集市为您收集整理的javascript – D3强制布局:链接的直线而不是曲线(但仅适用于某些链接)全部内容,希望文章能够帮你解决javascript – D3强制布局:链接的直线而不是曲线(但仅适用于某些链接)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。