当前位置: 首页 > 编程日记 > 正文

用Graphviz来画图 1

做了一个系统,通过配置来完成一些简单或者复杂的产品逻辑, 系统投入使用以后, 产品人员在上面配置了不少产品,产品的流程都是存放在一个xml里面,前几天突然有个想法, 打算把这个流程通过图形表示出来, 于是打开google,上网查找java画图的工具,找来找去,没有看到什么好用的免费库,商业的又觉得破解太麻烦,于是无意中找到Graphviz,初步使用以后,发现这个工具真的是很强大。除了不能用java直接操作以外,画各种流程图,网络图,简直是异常简单,而且画图的效果也很好。

Graphviz的主页在http://www.graphviz.org/ , 他是AT&T Labs-Research开发的图形绘制工具,  他可以很方便的用来绘制结构化的图形网络,支持多种格式输出, 生成图片的质量和速度都不错

Graphviz本身是开源的产品,下载可以到 这里 ,以及他的演示界面   Graphviz在windows上和Linux上都可以顺利运行

安装好Graphviz以后, Graphviz的默认命令会自动添加到命令行走, 使用它很简单,我们需要写一个dot文件, 格式如下

/*注释的格式, 很熟悉吧*/

/*digraph 表示一个有向图 */
    digraph G {

    
"A"->"B"
        }

把上面的内容保存为test.dot以后,在命令行下通过"dot test.dot  -Tpng -o result.png" 就会在当前目录生成test.png,,非常方便
t_cap.png
具体的dot格式可以查阅系统的pdf文档,  我可以给出一个复杂一点的小例子和windows下面中文解决办法

digraph G {

        graph [
         ratio
="auto"
         label
="hello ,我的测试" 
         labelloc
=t
            fontname
="simyou.ttf"
        ];
     node  [
      shape
="box",
      style
="dotted",
      fontname
="simyou.ttf",
      fontsize
="10"
     ];
     edge  [ fontname
="simyou.ttf"];

        
"张三"
        [
         peripheries
=2,
         style
=filled,
         label
="市民张三"
         color
="#eecc80"
     ];
 
"李四"[
  style
=filled,
         label
="农民李四"
         color
="#eecc80"
 ];
 
"王五"[
  style
=filled,
         label
="农民王五"
         color
="#eecc80"
 ];
        
"张三"->"李四"[label="亲戚"];
 
"张三"->"王五"[label="朋友"];
 
"李四"->"王五"[label="不认识"];
  
}

在windows下面 ,把文件保存为utf-8格式,然后在文件中设置  fontname="simyou.ttf"(也可以通过命令行参数-E -N -G fontname="xx" 设置),在我的简体中文windowsxp中生成的图片是可以正常显示中文的。
o_cap.jpg

通过java来调用Graphviz的方法,代码如下

记得通过通过freemarker来生成dot脚本以后,必须要在本地保存为utf-8,然后用dot去处理, 直接通过管道传String的方法是不行的。我试过多种编码,全部都失败了,另外就是simyou.ttf是字体文件的名字,可以到你的windows\fonts\目录下面找到他们的列表

转载于:https://www.cnblogs.com/baoz/archive/2005/07/17/2269902.html

相关文章:

hung-yi lee_p12_深度学习简介

文章目录三个步骤step 1fully connect feedforward network神经网络原理从非DL到DL什么变了step 2step 3backpropagation注意这是篇头重脚轻的博客。大部分都在讲step1,2、3是飞快过去。三个步骤 step 1 许许多多的逻辑回归(神经元)模型组成…

openGL学习笔记(1)——常用方法原型解释

1、初始化,设置背景色 void glClear(int mask) 清除缓存 实參含义:GL10.GL_COLOR_BUFFER_BIT 清除颜色缓存 GL10.GL_DEPTH_BUFFER_BIT 清除深度缓存 希望同时清除多个缓存,将实參用或(|)连接即可 void …

让VBCommenter支持自定义用户名

在使用VBCommenter生成XML格式的注释时&#xff0c;发现在<history></history>标签内的用户名是登陆系统的用户名&#xff0c;而我们的用户名一般是一些简称或其它英文名等&#xff0c;这样在注释中想记录开发人员的真实姓名就必须手工修改&#xff0c;颇不方便。是…

模拟器抓取https方法

说明&#xff1a;为了解决安卓手线上不能抓取https请求&#xff0c;以下整理通过模拟器抓取https请求方法如下&#xff1a;前置条件&#xff1a;安卓模拟器1、夜神抓包工具&#xff1a;fiddler、charles不要安装证书 第一步安装模拟器 可以按照夜神模拟器步骤省略 第二步de.rob…

hung-yi lee_p15_机器学习深层网络比浅层网络好在哪

文章目录疑问-为什么要那么多层简单解释以语音识别为例语音识别基础GMM的方法的缺陷深度学习的高明之处回到问题-为什么一层能解决还要多层从电子工程(EE)角度解释一个电路的例子日常角度解释剪窗花Deep Learning的优点适用于参数少的情况End-to-end Learning面临复杂问题疑问-…

从WEB SERVICE 上返回大数据量的DATASET

前段时间在做一个项目的时候,遇到了要通过WEB SERVICE从服务器上返回数据量比较大的DATASET,当然&#xff0c;除了显示在页面上以外&#xff0c;有可能还要用这些数据在客户端进行其它操作。查遍了网站的文章,问了一些朋友,也找了一些解决方法. 众所周知,如果不用其它方…

ORACLE解决登陆em状态暂挂方法

1、找到oracle安装目录中db_1/计算机名_orcl/sysman/config/emd.properties &#xff0c; 用记事本打开emd.properties&#xff0c;在emd.properties文件 最后一行 的agentTZRegionGMT改为 agentTZRegionAsia/Chungking2、在dos 窗口输入 set oracle_sidorcl emctl stop dbcon…

VBA注释临时

Sub shishi() 按ABCDE为多选题定义答案; A&#xff0e;沙利度胺 B&#xff0e;异烟肼 C&#xff0e;利福平 d.氯法齐明 E.氨苯砜 46&#xff0e;各型麻风病的首选药物为(D) A&#xff0e;沙利度胺 B&#xff0e;异烟肼 C&#xff0e;利福平 d.氯法齐明 E.氨苯砜 45&#xf…

hung-yi lee_p13_反向传播

文章目录背景链式法则计算思路梯度计算过程/反向传播总结背景 回顾神经网络中计算梯度&#xff0c;更新梯度的过程 这里面的问题是&#xff0c;梯度是一个上百万维的向量&#xff0c;计算出来并非易事 这就引出了反向传播 可以说反向传播是梯度下降在神经网络中的实现。 链式…

介绍两个非常好用的Javascript内存泄漏检测工具

内存泄漏对开发者来说一般很难检测因为它们是由一些大量代码中的意外的错误引起的&#xff0c;但它在系统内存不足前并不影响程序的功能。这就是为什么会有人在很长时间的测试期中收集应用程序性能指标来测试性能。 最简单的检测内存泄漏的方式是用任务管理器检查内存使用情况。…

全局化和本地化

区域性En 英语en-CA 加拿大英语af-ZA 南非荷兰语eu 巴斯克语kn-IN 埃纳德语 印度tr 土耳其语Cy-uz-UZ 乌兹别克语 西里尔字母表Lt-uz-UZ 乌兹别克语 拉丁文字母表zh-CHT 繁体中文zh-CHS 简体中文设置当前区域性System.Threading.Thread.CurrentThread.CurrentCulture new Sys…

lvm讲解和磁盘故障案例

一&#xff1a;lvm讲解1.准备磁盘分区fdisk /deb/sdbn创建三个新分区&#xff0c;分别为1Gt改变分区类型为8e2.pvcreate /dev/sdb1yum install -y lvm [rootcentos7-1 ~]# yum install -y lvm 已加载插件&#xff1a;fastestmirror base …

hung-yi lee_p17_卷积神经网络

文章目录背景&#xff1a;卷积层池化层摊平KerasCNN学到了什么Deep DreamDeep Style怎么把CNN用在下围棋上为什么可以将CNN用于下围棋CNN更多应用背景&#xff1a; DNN拿掉一些参数就成CNN 为什么可以这样做 每一个神经元只需要图中的一部分就可以识别出想要的模式 更小的区域…

抓住青春的尾巴再愤青一把

这是今天google大神查到的&#xff1a;一、CAPCOM的《大神》&#xff0c;PS2专属ACT游戏&#xff0c;以三大神之一的日照处天子为原型&#xff0c;动作爽快华丽&#xff0c;是我期待很久的作品&#xff0c;预计今冬发售。 ... 并不是说这个水墨3D是大宇搞出来的DD&#xff0c;3…

the folder is already a source folder.

在新建的maven项目中&#xff0c;新建src/main/java时&#xff0c;提示the folder is already a source folder. 解决办法&#xff1a;右键工程&#xff0c;build path--configure build path--source&#xff0c;删除src/mian/java&#xff0c;再建src/main/java时即可。转载于…

selenium webdriver - 结束进程

1 import org.openqa.selenium.WebDriver;2 import org.openqa.selenium.firefox.FirefoxDriver;3 import org.openqa.selenium.os.WindowsUtils;4 /*5 * 结束进程6 */7 public class KillProcess {8 9 public static void main(String[] args) { 10 //结束进程 …

白盒测试的3中主要方法(cont.)

文章目录白盒测试简介逻辑覆盖测试法SCDCCCCDCMCCMCDC基本路径测试法BPC测试的四个步骤循环路径覆盖法白盒测试简介 静态白盒测试也称为结构化分析。 动态白盒测试又称为结构化测试。 以下所说的应该均属于动态白盒测试。 逻辑覆盖测试法 SC sentence coverage 语句覆盖 设…

CRichEdit小记

使用前要AfxInitRichEdit2(); 修改背景颜色和字体颜色 CRichEditCtrl* p(CRichEditCtrl*)GetDlgItem(IDC_RICHEDIT21);CHARFORMAT2 cf;memset((char*)&cf,0,sizeof(cf));COLORREF color;color RGB(0,255,0);cf.dwMask CFM_COLOR;cf.crTextColor color; //The text color…

学习3dmax(四)

今天没有怎么做东西&#xff0c;是再看一些理论的东西。这个是再网上看到的&#xff0c;虽然说的是如何学习3dmax&#xff0c;但是我个人认为学习任何一种技术都应该如此。1. 把MAX当成一门新的课程学习&#xff08;和MAYA没啥关系&#xff01;真的。&#xff09;&…

ES6深拷贝与浅拷贝

小感在前 React学习与开发过程要经历一个相当长的准备阶段&#xff0c;此前看阮一峰老师的文章中&#xff0c;他就特别提到这一点。但是&#xff0c;由于React框架或者说是一种优秀的前端架构实在太诱人&#xff0c;所以&#xff0c;掌握这项技术所涉及的技术栈过程中经历的任何…

hung-yi lee_p22_无监督学习:词嵌入

文章目录原视频地址&#xff1a;添加链接描述输入是一个词 输出是一个向量 整个过程无监督 用来训练的是一堆文章 精神&#xff1a; 根据一个词汇的上下文来理解它 具体&#xff1a; 1.count based 两个词经常一起出现&#xff0c;认为它们是相似的 2.prediction-based 给神经…

用vs2010打开使用vs2013升级后的WP工程

项目在win7vs2010的环境中建立的&#xff0c;后来在win8.1vs2013的环境下修改和完善&#xff1a; 但是所有功能实现后发现wp7项目在使用vs2013打开后因为单向升级的原因&#xff0c;项目只能被编译为wp8项目&#xff08;win8.1vs2013无法安装wp7的sdk&#xff0c;提示不兼容&am…

神州6号发射成功了--庆祝一下

转载于:https://www.cnblogs.com/ccBoy/archive/2005/10/12/253268.html

android保持服务不休眠(持续运行)以及唤醒屏幕的方法

假设有这样一个应用场景&#xff0c;一个服务一直在默默的工作&#xff08;比如即时地获取服务器的消息&#xff09;&#xff0c;即使在屏幕已经因为长时间无操作而关闭&#xff0c;或者用户按了电源键让屏幕关闭&#xff0c;手机进入休眠状态&#xff0c;他必须依然在工作中。…

三类常见软件质量(Quality Attribute)属性的通俗解释

外部质量 用户关心 正确性&#xff0c;最最基本的质量属性&#xff0c;对应功能需求&#xff0c;其他QA多对应非功能需求。健壮性&#xff0c;在异常情况下正常运行的能力。 包含容错能力和恢复能力。恢复没有容错健壮。可靠性&#xff0c;用平均无bug运行时间与平均bug修复时…

winform动态的文字效果

效果图如下 private void Form1_Load(object sender, EventArgs e){Graphics Car_Paint panel1.CreateGraphics();//实例化绘图对象string Car_Str "青岛**软件公司";//定义要绘制的动态文字Character character new Character();//实例化自定义类对象character.D…

使用Mycat构建MySQL读写分离、主从复制、主从高可用

数据库读写分离对于大型系统或者访问量很高的互联网应用来说&#xff0c;是必不可少的一个重要功能。 从数据库的角度来说&#xff0c;对于大多数应用来说&#xff0c;从集中到分布&#xff0c;最基本的一个需求不是数据存储的瓶颈&#xff0c;而是在于计算的瓶颈&#xff0c;…

SharePoint的Reporting Service Viewer Web Part

今天本来打算做一个专门用于Reporting Service报表浏览的SharePoint web part&#xff0c;记得在Reporting Service 2000下有一个viewer的Sample&#xff0c;就想找来参考一下&#xff0c;谁知在C:\Program Files\Microsoft SQL Server\90\Tools\Reporting Services\SharePoint…

7个面向对象常用原则的中英文名、别名、定义及显著特点

单一职责原则 英文名&#xff1a;Single Responsibility Principle(SRP) 别名&#xff1a;无 定义1&#xff1a;一个对象应该只包含单一的职责&#xff0c;并且该职责被完整地封装在一个类中 定义2&#xff1a;就一个类而言&#xff0c;应该仅有一个引起它变化的原因 开闭原则…

常见的“公共标志和说明”英文表达

1、Business Hours 营业时间  2、Office Hours 办公时间  3、Entrance 入口  4、Exit 出口  5、Push 推  6、Pull 拉  7、Shut 此路不通  8、On 打开 ( 放)  9、Off 关  10、Open 营业  11、Pause 暂停  12、Stop 关闭  13、Closed 下班  14、Menu 菜…