如何在Julia REPL中查看GraphViz生成的图形输出?
问题:GraphViz图表无法在MacOS上弹出显示
我正在遵循Decapodes.jl的官方教程,该教程使用GraphViz显示图表。运行以下代码:
using Decapodes, Decapodes.Diagrams using Catlab.Present, Catlab.Graphics Variable = @decapode Decapodes2D begin C::Form0{X} end; draw_equation(decapode) = to_graphviz(decapode, node_labels=true, prog="neato", node_attrs=Dict(:shape=>"oval"), graph_attrs=Dict(:nodesep=>"4.0")) draw_equation(Variable)
Julia REPL输出如下内容:
Catlab.Graphics.Graphviz.Graph("G", true, "neato", Catlab.Graphics.Graphviz.Statement[Catlab.Graphics.Graphviz.Node("n1", OrderedCollections.OrderedDict{Symbol, Union{String, Catlab.Graphics.Graphviz.Html}}(:label => "C:Ω₀"))], OrderedCollections.OrderedDict{Symbol, Union{String, Catlab.Graphics.Graphviz.Html}}(:nodesep => "4.0", :rankdir => "LR"), OrderedCollections.OrderedDict{Symbol, Union{String, Catlab.Graphics.Graphviz.Html}}(:height => "0.05", :margin => "0", :shape => "oval", :width => "0.05"), OrderedCollections.OrderedDict{Symbol, Union{String, Catlab.Graphics.Graphviz.Html}}(:arrowsize => "0.5"))
我期望图表在新窗口中显示,但并未弹出窗口。我的运行环境为MacOS Monterey 12.4、Julia 1.7,已通过Homebrew和GraphViz.jl包安装GraphViz,请问如何查看该图表?
解决方法
触发Julia多媒体显示:直接调用
display函数渲染图表,替代直接返回Graph对象:g = draw_equation(Variable) display(g)这会调用Julia的多媒体显示系统,启动GraphViz的默认查看器弹出窗口。
导出为图像文件查看:如果display方式无效,可将图表导出为PDF或PNG文件,再手动打开:
using Catlab.Graphics.Graphviz # 导出为PDF save(PDF("variable_diagram.pdf"), draw_equation(Variable)) # 或导出为PNG save(PNG("variable_diagram.png"), draw_equation(Variable))导出完成后,在Finder中找到对应文件打开即可。
验证系统级GraphViz功能:在终端中执行以下命令,测试GraphViz是否能正常渲染并打开图片:
echo "digraph G { C:Ω₀ }" | neato -Tpng -o test.png && open test.png如果该命令能成功打开图片,说明系统GraphViz正常,回到Julia中重新尝试
display即可。更新相关依赖包:确保Decapodes、Catlab和GraphViz包为最新版本,避免版本兼容问题:
using Pkg Pkg.update(["Decapodes", "Catlab", "GraphViz"])更新完成后重启Julia,再运行代码测试。
内容的提问来源于stack exchange,提问作者Dav
相关产品推荐
相关产品推荐

