Graphviz

学习一时爽,一直学习一直爽linux

  Hello,你们好,我是 もうり,一个从无到有的技术+语言小白。web

官方文档:http://www.graphviz.org算法

graphviz是贝尔实验室开发的一个开源的工具包,它使用一个特定的DSL(领域特定语言):dot做为脚本语言,而后使用布局引擎来解析此脚本,并完成自动布局。spring

Graphviz

graphviz自己是一个绘图工具软件,下载地址在:http://www.graphviz.org/。若是你是linux,能够用apt-get或者yum的方法安装。若是是windows,就在官网下载msi文件安装。不管是linux仍是windows,装完后都要设置环境变量,将graphviz的bin目录加到PATH,好比我是windows,加入了PATHwindows

在这里插入图片描述

如何布局

graphviz中包含了众多的布局器:微信

  • dot 默认布局方式,主要用于有向图app

  • 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()







本文分享自微信公众号 - Python之王(sen13717378202)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。

相关文章
相关标签/搜索