【问题标题】:GraphViz - Link Edge Label to Another Dot GraphGraphViz - 将边缘标签链接到另一个点图
【发布时间】:2018-06-04 10:58:42
【问题描述】:

我一直在寻找解决方案,但似乎找不到将边缘标签链接到另一个 GraphViz 点图的解决方案。例如,如果我有一个名为“mydotimage2.svg”的图表,由以下内容生成:

digraph G
{
    graph [compound = true];

    subgraph cluster_0
    {
        node [style = bold];
        "A" "B" "C";
    }

    subgraph cluster_1
    {
        node [style = bold];
        "One" "Two" "Three";
    }

    "A" -> "One" [lhead = cluster_1, ltail = cluster_0, label = "Falafel", href = "~/workspace/GraphViz/mydotimage1.svg"]
}

如果我通过以下方式在终端中创建“mydotimage2.svg”SVG 图像:

dot -T svg mydotimage2.dot > mydotimage2.svg

图像在我的浏览器中打开得很好,并且生成的图像中从 A 到 One 的边缘标签是可点击的,但也无法打开位于同一 GraphViz 目录中的 mydotimage1.svg。有谁知道如何做到这一点?我真的很感激。提前致谢。

【问题讨论】:

    标签: svg graphviz dot


    【解决方案1】:

    您应该使用相对路径。 也就是说,不要使用href = "~/workspace/GraphViz/mydotimage1.svg",而是使用href = "./mydotimage1.svg"

    顺便说一句,您可以将所需的输出文件名指定为dot 的参数,而不是使用管道重定向(>)。
    只需将-omydotimage2.svg 附加到命令行即可。 其中“mydotimage2.svg”是您要写入的文件名。

    【讨论】:

    • 谢谢!像魅力一样工作。谢谢,我从 GraphViz 开始执行“dot -T svg -O .svg”,但我正在编写 python 脚本来生成点代码和 svg 图像并习惯于管道重定向。这样做有害吗?
    • 如果您更喜欢使用管道重定向,请不要认为使用管道重定向会有任何问题。只是指出以防您忽略了此键。
    【解决方案2】:

    这是我在我的机器上观察到的,我猜这是一个普遍的问题:

    graphviz 确实将波浪号 ~ 扩展为但不会删除波浪号。在我的情况下,当我单击图表中的超链接时,我看到 /home/rainer/~/workspace/GraphViz/mydotimage1.svg 作为图像位置。那显然是不存在的。对我来说似乎是一个错误......

    解决方案/解决方法是用您的主文件夹路径替换脚本中的~,在我的情况下

    href = "/home/rainer/workspace/GraphViz/mydotimage1.svg"
    

    按预期工作。

    【讨论】:

    • 谢谢!这种方法也很有效,一般来说可能很好了解,这样图像就不需要在同一个文件夹中才能打开另一个。
    • 是的,绝对路径(如我的建议)和相对路径(根据@user882813)都有效,只是~ 有问题。并且:它可能因操作系统而异,但对于输出文件,您需要使用小写字符:dot -T svg -o <filename>.svg> 应该一样好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-24
    • 1970-01-01
    • 2017-06-17
    • 2022-01-16
    • 2023-03-22
    • 2020-02-09
    相关资源
    最近更新 更多