Graphviz介绍

时间:2023年06月23日

/

来源:网络

/

编辑:佚名

Hello,大家好,我是 もうり,一个从无到有的技术+语言小白。
官方文档:http://www.graphviz.org
graphviz是贝尔实验室开发的一个开源的工具包,它使用一个特定的DSL(领域特定语言):dot作为脚本语言,然后使用布局引擎来解析此脚本,并完成自动布局。
Graphviz 
graphviz本身是一个绘图工具软件,下载地址在:http://www.graphviz.org/。如果你是linux,可以用apt-get或者yum的方法安装。如果是windows,就在网站下载msi文件安装。无论是linux还是windows,装完后都要设置环境变量,将graphviz的bin目录加到PATH,比如我是windows,加入了PATH

在这里插入图片描述
如何布局 
graphviz中包含了众多的布局器:
dot 默认布局方式,主要用于有向图
neato 基于spring-model(又称force-based)算法
twopi 径向布局
circo 圆环布局
graph用于无向图
会个dot和graph就能装逼了
要用graphviz画图,首先要明确的就是所画之图为有向图还是无向图。
Digraph表示有向图,graph表示无向图。
一般来说,主要是有向图,无向图也可通过设置边的属性来画出无向边。
须注意的是,-> 表示有向图中的边,-- 表示无向图中的边,不能混用。
有向图图
比如,要绘制一个有向图,包含4个节点a,b,c,d。
其中a指向b,b和c指向d。可以定义下列脚本:
建立一个demo.dot脚本:
digraph demo{
a->b;
b->d;
c->d;
}
复制

在这里插入图片描述
然后保存下

在这里插入图片描述
那么这个demo.png就生成了

在这里插入图片描述
打开Graphviz好麻烦,没错还可以直接用cmd
打开cmd到first.dot目录下,运行:
dot -Tpng demo.dot -o demo.png
可以得到画好的图形。
解释:dot表示使用的是dot布局,其他布局相应的修改即可,-T表示格式,即画成png格式,-o表示重命名为first.png。
无向图 
就是将->变成 --
graph demo1 {
    a -- b
    b -- c
    c -- a
}
复制

在这里插入图片描述
恭喜你入门了,我也就会个dot
http://icodeit.org/2012/01/%E4%BD%BF%E7%94%A8graphviz%E7%BB%98%E5%88%B6%E6%B5%81%E7%A8%8B%E5%9B%BE/
后面就是学下换样式换图形

在这里插入图片描述
我得说下hash表就是通过这玩意画的

在这里插入图片描述

在这里插入图片描述
py交互 
主要是将一个决策树可视化
sklearn自带的 export_graphviz
使用的包是pydotplus
pip install pydotplus
复制
demo
# author: 毛利
from sklearn.model_selection import train_test_split
import pandas as pd
from sklearn.tree import DecisionTreeClassifier
from sklearn import datasets
from  sklearn import tree
from sklearn.metrics import accuracy_score
import pydotplus
iris = datasets.load_iris()
iris_feature = '花萼长度', '花萼宽度', '花瓣长度', '花瓣宽度'
iris_feature_E = 'sepal length', 'sepal width', 'petal length', 'petal width'
iris_class = 'Iris-setosa', 'Iris-versicolor', 'Iris-virginica'
x = pd.DataFrame(iris['data'])[[0,1]]
y = iris.target
x_train,x_test,y_train,y_test = train_test_split(x,y)
model = DecisionTreeClassifier()
model.fit(x_train,y_train)
y_train_pred = model.predict(x_train)
print('训练集正确率:', accuracy_score(y_train, y_train_pred))
# 保存
# dot -Tpng my.dot -o my.png
# 1、输出
with open('iris.dot', 'w') as f:
    tree.export_graphviz(model, out_file=f, feature_names=iris_feature_E[0:2], class_names=iris_class,
                         filled=True, rounded=True, special_characters=True)
tree.export_graphviz(model, out_file='iris.dot', feature_names=iris_feature_E[0:2], class_names=iris_class,
                     filled=True, rounded=True, special_characters=True)
# 2、给定文件名
tree.export_graphviz(model, out_file='iris.dot')
# tree.export_graphviz(model, out_file='iris.dot')
# 3、输出为pdf格式
dot_data = tree.export_graphviz(model, out_file=None, feature_names=iris_feature_E[0:2], class_names=iris_class,
                                filled=True, rounded=True, special_characters=True)
graph = pydotplus.graph_from_dot_data(dot_data)
graph.write_pdf('iris.pdf')
f = open('iris.png', 'wb')
f.write(graph.create_png())
f.close()
复制
猜你需要

豫ICP备2021026617号-1  豫公网安备:41172602000185   Copyright © 2021-2028 www.78moban.com/ All Rights Reserved

本站作品均来自互联网,转载目的在于传递更多信息,并不代表本站赞同其观点和对其真实性负责。如有侵犯您的版权,请联系 1565229909#qq.com(把#改成@),我们将立即处理。