c语言调用graphviz_graphviz使用

c语言调用graphviz_graphviz使用graphviz 是贝尔实验室几个计算机牛人设计的一个开源的图表 计算机科学中数据结构中的图 可视化项目 主要用 C 语言实现 主要实现了一些图布局算法 通过这些算法 可以将图中的节点在画布上比较均匀的分布 缩短节点之间的边长 并且尽量的减少边的交叉 graphviz 提供命令式的绘图方式 它提供一个 dot 语言用来编写绘图脚本 然后对这个脚本进行解析 分析出其中的定点 边以及子图 然后根据属性进行绘制

graphviz是贝尔实验室几个计算机牛人设计的一个开源 的图表(计算机科学中数据结构中的图)可视化项目,主要用C语言实现,主要实现了一些图布局算法。通过这些算法,可以将图中的节点在画布上比较均匀的分布,缩短节点之间的边长,并且尽量的减少边的交叉。

graphviz提供命令式的绘图方式,它提供一个dot语言 用来编写绘图脚本,然后对这个脚本进行解析,分析出其中的定点,边以及子图,然后根据属性进行绘制。具体的可以看一个例子,这个例子来自官方的文档。

下载

第一个demo

digraph G{

size = “4, 4”;//图片大小

main[shape=box];/*形状*/

main->parse;

parse->execute;

main->init[style = dotted];//虚线

main->cleanup;

execute->{make_string; printf}//连接两个

init->make_string;

edge[color = red]; // 连接线的颜色

main->printf[style=bold, label=”100 times”];//线的 label

make_string[label = “make a\nstring”]// \n, 这个node的label,注意和上一行的区别

node[shape = box, style = filled, color = “.7.3 1.0”];//一个node的属性

execute->compare;

}

执行:dot -Tjpg aaa.dot -o aaa.jpg

生成svg: dot -Tsvg aaa.dot -o aaa.svg

c语言调用graphviz_graphviz使用

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/233892.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • JavaIO流详解

    【I/O流】Input/Output:输入输出机制输入机制:允许java程序获取外部设备的数据(磁盘,光盘,网络等)。输出机制:保留java程序中的数据,输出到外部设备上(磁盘,光盘等)。【可以看出,IO的入出是以java程序为第一人称的】IO各种之间的关系先看张图:流的分类:通过不同的方法,可以对于进行分类。1.按照功能来划分:输入流:只能从中读取数

    2022年4月5日
    62
  • pytest skipif_白盒测试用例

    pytest skipif_白盒测试用例前言pytest.mark.skip可以标记无法在某些平台上运行的测试功能,或者您希望失败的测试功能Skip和xfail:处理那些不会成功的测试用例你可以对那些在某些特定平台上不能运行的测试用

    2022年7月29日
    7
  • parse_str — 将字符串解析成多个变量

    parse_str — 将字符串解析成多个变量

    2021年11月4日
    42
  • python 可迭代对象 迭代器 生成器_Python3迭代器获取

    python 可迭代对象 迭代器 生成器_Python3迭代器获取在日常提升Python基本功的时候,可能会被Python的迭代器和生成器搞晕,之前在学习和使用时,本来forin循环体和enumerate函数用的飞起,觉得自己已经彻底了解了Python的迭代特性,但接触了迭代器和生成器后,突然感觉懵逼,大概率会被可迭代、迭代器、生成器等概念搞的不知所向,本文就是结合日常项目应用,对Python的迭代概念进行系统性的全面解析,包括其底层实现原理,还有一些常见的应用,希望能帮助更多人,同时也算作给自己梳理思路了。一、基本概念二、迭代器三、生成器四、基本应用

    2022年9月28日
    5
  • Hmily 源码解析 (三) —— 高效异步任务框架的使用

    Hmily 源码解析 (三) —— 高效异步任务框架的使用目录这是hmily的一个核心,hmily之所以高效就是因为hmily把日志的存储维护操作及confirm,cancel的操作通过Disruptor的异步任务框架的方式执行。关于disruptor的原理如下,我没怎么研究过。后我主要分析hmily是如何使用Disruptor这个框架。高性能队列Disruptor的使用剖析Disruptor:为什么会这么快?(一)Ringbuffer的…

    2022年5月21日
    40
  • asp.net mvc ajax 例子

    asp.net mvc ajax 例子 一、建立一个mvc项目。 二、在Controllers文件夹中加入一个新的控制器ajaxController。代码如下:   usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Web;usingSystem.Web.Mvc;usingSystem.Web.Mv

    2022年7月16日
    17

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号