【问题标题】:Create native SVG <circle> elements from Illustrator/Gephi从 Illustrator/Gephi 创建原生 SVG <circle> 元素
【发布时间】:2012-06-16 22:08:48
【问题描述】:

我正在尝试向我在 Gephi 中制作的输出 SVG 的网络图添加交互性。我正在使用一个 Raphael 模板,该模板喜欢将我的节点输入为 SVG 圆圈。问题是我来自 Gephi 的 SVG 圆圈实际上是贝塞尔曲线。例如:

<path fill="#D52A2A" d="M663.395,426.958c0-2.869-2.324-5.194-5.193-5.194s-5.191,2.325-5.191,5.194
c0,2.867,2.322,5.189,5.191,5.189C661.069,432.148,663.395,429.826,663.395,426.958"/>

有什么方法可以将这样的路径转换为具有 x、y 和半径的标准 SVG 圆形元素?

【问题讨论】:

    标签: svg raphael adobe-illustrator gephi


    【解决方案1】:

    您可以分析路径,但如果您知道哪些路径是从圆圈开始的,那么您可以像这样进行快速近似:

    var p = document.querySelector("path");
    var c = document.createElementNS("http://www.w3.org/2000/svg", "circle");
    var b = p.getBBox();
    c.cx.baseVal.value = b.x + b.width/2;
    c.cy.baseVal.value = b.y + b.height/2;
    c.r.baseVal.value = b.width/2; // assuming width and height are the same
    p.parentNode.appendChild(c);
    

    提示您的路径是一个圆圈可能是 bbox 的宽度和高度非常接近相等,或者路径 'd' 属性 gephi 输出的圆圈始终使用相同的形式(不确定是否是这种情况)。

    Gephi 是开源的,因此另一种选择是让其输出您想要开始的内容。

    更新: here's a jsfiddle 显示此内容。

    【讨论】:

    • 这是有道理的。只是一个关于如何让解析器工作的基本问题。您如何加载 svg 文件以供选择器 document.querySelector("path") 运行?您可以通过 jquery 执行 $.ajax 之类的操作并将“文档”替换为“数据”吗?还是像 Raphael Tiger 示例 link 中将其作为变量加载并选择变量?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-08
    • 2020-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-20
    • 2019-04-15
    相关资源
    最近更新 更多