开源的图可视化工具——Graphviz

在这里插入图片描述

g r a p h v i z graphviz graphviz(Graph Visualization Software)是一个由 A T & T AT\&T AT&T实验室启动的开源工具包,用于绘制 D O T DOT DOT语言脚本描述的图形。

实现可视化效果(官网摘取):

在这里插入图片描述
在这里插入图片描述

下载安装

官网:http://www.graphviz.org/

对应各个系统版本下载,win用户安装过程中选择自动加入path即可,其他系统用户详见官网下载页说明。

使用

vscode对应插件Graphviz Preview

主要方法

主要分为八个转换方法, g r a p h v i z graphviz graphviz主要功能就是把脚本转化为svg图或者其他模式的图片,其中使用较多的转换方法是dotneato

  • dot:有向图
  • neato:无向图

作用方式为:dot/neato/... [option] file

保存为pdf文件,类比svg

dot -Tpdf -o test.pdf ./test.dot

在这里插入图片描述

更详细的参数说明见http://www.graphviz.org/pdf/dot.1.pdf

应用

为搜索二叉树基类添加DOT格式文档的输出方法:

template <typename T>
void Tree<T>::TreeOut(TreeNode<T> *x, string name)
{
    // 声明文件名称
    stringstream sstr;
    name = name + ".dot";
    int num = name.size() + 1;
    char *filename = new char[num];
    sstr << name;
    sstr >> filename;
    freopen(filename, "w", stdout);
    cout << "digraph Tree{" << endl;
    queue<TreeNode<T> *> q;
    q.push(x);
    while (q.size())
    {
        TreeNode<T> *tmp = q.front();
        q.pop();
        if (tmp->_left)
        {
            cout << tmp->_key << "->" 
                << tmp->_left->_key << endl;
            q.push(tmp->_left);
        }
        if (tmp->_right)
        {
            cout << tmp->_key << "->" 
                << tmp->_right->_key << endl;
            q.push(tmp->_right);
        }
    }

最终得出结果为:
在这里插入图片描述

可以看得出效果相对较差,因为间距问题和无法区分左右子树,所以后续需要继续改进,网上挖到一份陈年脚本,用上效果很好,挂个链接:https://gist.github.com/nanpuyue/b5950f20937f01aa43227d269aa83918

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

数学小牛马

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

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

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

打赏作者

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

抵扣说明:

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

余额充值