Graphviz的使用指南

一、简述

Graphviz 是一款由 AT&T Research 和 Lucent Bell 实验室开源的可视化图形工具,可以很方便的用来绘制结构化的图形网络,支持多种格式输出。Graphviz 输入是一个用 dot 语言编写的绘图脚本,通过对输入脚本的解析,分析出其中的点、边及子图,然后根据属性进行绘制。Graphviz layout 以简单的文本语言描述图形,并以实用的格式制作图表,如用于网页的 images 和 SVG ;用于放入在其它文件中或显示在交互式图形浏览器中的 PDF 和 Postscript 。

二、安装

  • 我是使用 语雀 中文档自带的文本绘图来使用Graphviz 的。
    在这里插入图片描述
  • 如果你想要了解 Graphviz 工具,你可也以进入 Graphviz 官网 下载。按照安装向导安装完以后,记得要把 Graphviz 工具的 bin 目录加到环境变量 PATH 中。例如
    在这里插入图片描述
    接下来测试下是否安装成功,打开 cmd 命令窗口,输入命令dot -version,出现下图则证明安装成功
    在这里插入图片描述

三、使用

接下来讲的是在 语雀 中Graphviz的使用。
这是详细的 Grapviz使用语法介绍

3.1、简单使用

3.1.1 无向图
graph {
    a -- b;
    b -- c;
    a -- c;
    d -- c;
    e -- c;
    e -- a;
  }

效果图:
在这里插入图片描述

3.1.2 有向图
digraph {
    a -> b;
    b -> c;
}

在这里插入图片描述

3.2、稍微复杂点的用法

3.2.1 带标签
digraph {
    player[label = "player"];
    game[label = "game"];
    player -> game[label = "play"]
}

效果图:
在这里插入图片描述

3.2.2 不同颜色
digraph {
    player[label = "player", color = Blue, fontcolor = Red, fontsize = 24, shape = box];
    game[label = "game", color = Red, fontcolor = Blue, fontsize = 24, shape = ellipse];
    player -> game[label = "play"]
}

效果图:
在这里插入图片描述

3.2.3 形状

详细可以见 官方文档

3.2.4 插入图片
digraph {
    c[shape = none, image = "./pic.png"]
    a -> b -> c;
    c -> d;
}

效果图:
在这里插入图片描述

3.2.5 统一节点和连线
digraph {
    node[shape = box]
    edge[style = "dashed"]
    c[shape = none]
    a -> b -> c;
    c -> d;
}

效果图:
在这里插入图片描述

3.2.6 子视图
digraph {
    label = visitNet
    rankdir = LR
    node[color = Red, fontsize = 24, shape = box]
    edge[color = Blue, style = "dashed"]
    user[style = "filled", color = "yellow", fillcolor = "chartreuse"]
    subgraph cluster_cd{
        label = "server and browser"
        bgcolor = yellow;
        browser -> server
    }
    user -> computer;
    computer -> browser;
}

效果图:
在这里插入图片描述

3.2.7 结构视图
digraph {
    node[shape = record];
    struct1[label = "<f0> left|<f1> mid&#92; dle|<f2> right"];
    struct2[label = "<f0> one|<f1> two"];
    struct3[label = "hello&#92;nworld | {b|{c|<here> d|e}|f}|g|h"];
    struct1:f1 -> struct2:f0;
    struct1:f2 -> struct3:here;
}

效果图:
在这里插入图片描述

3.2.8 树形结构
digraph tree {
  fontname = "PingFang-SC-Light"
  fontsize = 24
  node[shape = "plaintext"]

  1 -> 2;
  1 -> 3;
  2 -> 4;
  2 -> 5;
  3 -> 6;
  3 -> 7;
  4 -> 8;
  4 -> 9;
  5 -> 10;
  5 -> 11;
  6 -> 12;
  6 -> 13;
  7 -> 14;
  7 -> 15;
}

效果图:
在这里插入图片描述

3.2.9 继承
digraph UML {

    node[fontname = "Courier New", fontsize = 10, shape = record];
    edge[fontname = "Courier New", fontsize = 10, arrowhead = "empty"];

    Car[label = "{Car | v : float\nt : float | run() : float}"]

    subgraph clusterSome{
        bgcolor = "yellow";
        Bus[label = "{Bus | | carryPeople() : void}"];
        Bike[label = "{bike | | ride() : void}"];
    }
    Bus -> Car
    Bike -> Car
}

效果图:
在这里插入图片描述

3.2.10 时序图
digraph time {

    rankdir = "LR";
    node[shape = "point", width = 0, height = 0];
    edge[arrowhead = "none", style = "dashed"];

    {
        rank = "same"
        edge[style = "solided"];
        APP[shape = "plaintext"];
        APP -> step00 -> step01 -> step02 -> step03 -> step04 -> step05;
    }
    
    {
        rank="same";
        edge[style="solided"];
        SDK[shape="plaintext"];
        SDK -> step10 -> step11 -> step12 -> step13 -> step14 -> step15;
    }
    {
        rank="same";
        edge[style="solided"];
        AliPay[shape="plaintext"];
        AliPay -> step20 -> step21 -> step22 -> step23 -> step24 -> step25;
    }
    {
        rank="same";
        edge[style="solided"];
        Server[shape="plaintext"];
        Server -> step30 -> step31 -> step32 -> step33 -> step34 -> step35;
    }

    step00 -> step10 [label="sends order info", arrowhead="normal"];
    step11 -> step21 [label="open AliPay", arrowhead="normal"];
    step22 -> step12 [label="pay success", arrowhead="normal"];
    step13 -> step03 [label="pay success", arrowhead="normal"];
    step24 -> step34 [label="pay success", arrowhead="normal"];
}

效果图:
在这里插入图片描述

四、参考

附:有不足、疏漏欢迎指出,我可以借鉴学习后补充。

  • 12
    点赞
  • 102
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Graphviz是一个开源的图形可视化工具,可用于绘制各种图形,包括有向图、无向图和树等。在使用Python中的Graphviz库时,可以参考官方文档和一些实例来学习和使用该库。 在Python中使用Graphviz可以通过以下步骤来实现图形可视化: 1. 首先,确保已经安装了Graphviz软件,并将其添加到系统路径中。 2. 导入需要的库和模块,比如导入sklearn.tree中的export_graphvizgraphviz库。 3. 通过export_graphviz函数将模型转换为DOT格式的数据,其中模型可以是决策树等。 4. 使用graphviz.Source函数将DOT数据源导入到Graphviz对象中。 5. 可以选择将图形保存为文件,使用render函数,或者直接在Jupyter Notebook中显示图形。 下面是一个示例代码,展示了如何使用Graphviz库来生成决策树模型的可视化: ```python from sklearn.tree import export_graphviz import graphviz dot_data = export_graphviz(model, out_file=None, class_names=['0', '1']) graph = graphviz.Source(dot_data) graph.render('决策树可视化') ``` 这段代码将决策树模型转换为DOT格式,然后使用graphviz.Source函数将其导入到Graphviz对象中。最后,使用render函数将图形保存为文件,在本例中保存为"决策树可视化"。 需要注意的是,具体的使用方法可能因为版本和环境的不同而有所差异。因此,在使用Graphviz时,建议参考官方文档和一些实例,并根据自己的需求进行调整和使用。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [[python] python模块graphviz使用入门](https://blog.csdn.net/LuohenYJ/article/details/106172201)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [Graphviz安装及使用:决策树可视化](https://blog.csdn.net/qq_45832050/article/details/109271806)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

跳舞的皮埃尔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值