graphviz实际上是一个绘图工具,可以根据dot脚本画出树形图等。
graphviz 有两种图,一种是无向图 graph
,边用 --
连接,一种是有向图 digraph
,边用 ->
连接
from graphviz import Digraph
dot = Digraph(name="MyPicture", comment="the test", format="png")
dot.node(name='a', label='Ming', color='green')
dot.node(name='b', label='Hong', color='yellow')
dot.node(name='c', label='Dong')
dot.edge('a', 'b', label="ab\na-b", color='red')
dot.edges(['cb', 'ac'])
print(dot.source)
dot.view(filename="mypicture", directory="D:\MyTest")
dot.render(filename='MyPicture', directory="D:\MyTest",view=True)
使用node()和edge()或edges()方法将节点和边添加到图形对象:
edges():
方法可以一次添加多个边, 每个边用字符串表示, 比如 cb
表示从 c 到 b 的边,即edges画边edge():
方法一次添加一个边调试推荐使用 view()
保存图片推荐使用 render(view=False)
中文的label默认是无法正确显示在图中的, 因为默认的字体并不支持中文, 需要我们为node设置字体。
# 有些字体是需要下载的,默认使用Microsoft YaHei就好
0、字体样式微软雅黑:Microsoft YaHei
1、字体样式华文黑体:STHeiti
2、字体样式华文楷体:STKaiti
3、字体样式华文宋体:STSong
4、字体样式华文仿宋:STFangsong
5、字体样式黑体:SimHei
6、字体样式宋体:SimSun
7、字体样式新宋体:NSimSun
8、字体样式仿宋:FangSong
9、字体样式楷体:KaiTi
10、字体样式仿宋_GB2312:FangSong_GB2312
11、字体样式楷体_GB2312:KaiTi_GB2312
12、字体样式微软正黑体:Microsoft JhengHei
13、字体样式微软雅黑体:Microsoft YaHei
14、字体样式隶书:LiSu
15、字体样式幼圆:YouYuan
16、字体样式华文细黑:STXihei
17、字体样式华文楷体:STKaiti
18、字体样式华文宋体:STSong
19、字体样式华文中宋:STZhongsong
20、字体样式华文仿宋:STFangsong
21、字体样式方正舒体:FZShuTi
22、字体样式方正姚体:FZYaoti
23、字体样式华文彩云:STCaiyun
24、字体样式华文琥珀:STHupo
25、字体样式华文隶书:STLiti
26、字体样式华文行楷:STXingkai
27、字体样式华文新魏:STXinwei
字体样式
from graphviz import Digraph
dot = Digraph(name="MyPicture", format="png")
dot.node(name="A", label="老师", fontname="Microsoft YaHei")
dot.node('B', '学生', fontname="Microsoft YaHei")
dot.edge("A", "B", label="教学", fontname="Microsoft YaHei")
dot.render(filename="MyPicture")
用法跟有向图一样
from graphviz import Graph
dot = Graph(name="MyPicture", format="png")
dot.node("People")
dot.node("Home")
dot.edge("People", "Home")
dot.view(filename="MyPicture")
Name
Default
Values
color
black
node shape color
comment
any string (format-dependent)
distortion
0.0
node distortion for shape=polygon
fillcolor
lightgrey/black
node fill color
fixedsize
false
label text has no affect on node size
fontcolor
black
type face color
fontname
Times-Roman
font family
fontsize
14
point size of label
group
name of node’s group
height
.5
height in inches
label
node name
any string
layer
overlay range
all, id or id:id
orientation
0.0
node rotation angle
peripheries
shape-dependent
number of node boundaries
regular
false
force polygon to be regular
shape
ellipse
node shape; see Section 2.1 and Appendix E
shapefile
external EPSF or SVG custom shape file
sides
4
number of sides for shape=polygon
skew
0.0
skewing of node for shape=polygon
style
graphics options, e.g. bold, dotted, filled; cf. Section 2.3
URL
URL associated with node (format-dependent)
width
.75
width in inches
z
0.0
z coordinate for VRML output
Name
Default
Values
arrowhead
normal
style of arrowhead at head end
arrowsize
1.0
scaling factor for arrowheads
arrowtail
normal
style of arrowhead at tail end
color
black
edge stroke color
comment
any string (format-dependent)
constraint
true
use edge to affect node ranking
decorate
if set, draws a line connecting labels with their edges
dir
forward
forward, back, both, or none
fontcolor
black
type face color
fontname
Times-Roman
font family
fontsize
14
point size of label
headlabel
label placed near head of edge
headport
n,ne,e,se,s,sw,w,nw
headURL
URL attached to head label if output format is ismap
label
edge label
labelangle
-25.0
angle in degrees which head or tail label is rotated off edge
labeldistance
1.0
scaling factor for distance of head or tail label from node
labelfloat
false
lessen constraints on edge label placement
labelfontcolor
black
type face color for head and tail labels
labelfontname
Times-Roman
font family for head and tail labels
labelfontsize
14
point size for head and tail labels
layer
overlay range
all, id or id:id
lhead
name of cluster to use as head of edge
ltail
name of cluster to use as tail of edge
minlen
1
minimum rank distance between head and tail
samehead
tag for head node; edge heads with the same tag are
sametail
merged onto the same port
style
tag for tail node; edge tails with the same tag are merged onto the same port
taillabel
graphics options, e.g. bold, dotted, filled; cf. Section 2.3
tailport
label placed near tail of edge n,ne,e,se,s,sw,w,nw
tailURL
URL attached to tail label if output format is ismap
weight
1
integer cost of stretching an edge
Name
Default
Values
bgcolor
background color for drawing, plus initial fill color
center
false
center drawing on page
clusterrank
local
may be global or none
color
black
for clusters, outline color, and fill color if fillcolor not defined
comment
any string (format-dependent)
compound
false
allow edges between clusters
concentrate
false
enables edge concentrators
fillcolor
black
cluster fill color
fontcolor
black
type face color
fontname
Times-Roman
font family
fontpath
list of directories to search for fonts
fontsize
14
point size of label
label
any string
labeljust
centered
”l” and ”r” for left- and right-justified cluster labels, respectively
labelloc
top
”t” and ”b” for top- and bottom-justified cluster labels, respectively
layers
id🆔id…
margin
.5
margin included in page, inches
mclimit
1.0
scale factor for mincross iterations
nodesep
.25
separation between nodes, in inches.
nslimit
if set to f, bounds network simplex iterations by (f)(number of nodes) when setting x-coordinates
nslimit1
if set to f, bounds network simplex iterations by (f)(number of nodes) when ranking nodes
ordering
if out out edge order is preserved
orientation
portrait
if rotate is not used and the value is landscape, use landscape orientation
page
unit of pagination, e.g. “8.5,11”
pagedir
BL
traversal order of pages
quantum
if quantum ¿ 0.0, node label dimensions will be rounded to integral multiples of quantum
rank
same, min, max, source or sink
rankdir
TB
LR (left to right) or TB (top to bottom)
ranksep
.75
separation between ranks, in inches.
ratio
approximate aspect ratio desired, fill or auto
remincross
if true and there are multiple clusters, re-run crossing minimization
rotate
If 90, set orientation to landscape
samplepoints
8
number of points used to represent ellipses and circles on output (cf. Appendix C
searchsize
30
maximum edges with negative cut values to check when looking for a minimum one during network simplex
size
maximum drawing size, in inches
style
graphics options, e.g. filled for clusters
URL
URL associated with graph (format-dependent)
"""使用graph_attr, node_attr, edge_attr参数, 你可以更改图中节点和边的显示样式"""
from graphviz import Digraph
dot = Digraph(name="MyPicture", node_attr={"shape": "plaintext"}, format="png")
dot.graph_attr['rankdir'] = 'LR'
dot.edge_attr.update(arrowhead='vee', arrowsize='2')
dot.node("Dog")
dot.node("Cat")
dot.edge("Dog", "Cat")
dot.view(filename="MyPicture")
手机扫一扫
移动阅读更方便
你可能感兴趣的文章