[R][bnlearn]高级的贝叶斯网络画图

用第三方包画图

一.工具:graphviz

在这里插入图片描述
下载页面提示说:这个包依赖于grid,graph,Rgraphviz,得先下载它们再下graphviz,grid好像是系统自带的,下后面两个就可以了

下载步骤:

a.打开R控制台:输入以下代码安装graph:
if (!requireNamespace("BiocManager", quietly = TRUE))
    install.packages("BiocManager")
    
BiocManager::install("graph")
b.输入以下代码安装Rgraphviz:
BiocManager::install("Rgraphviz")
c.手动下载gridGraphviz_0.3.tar.gz

我是手动下的,不知道直接install(“gridGraphviz”)行不行,你们可以试试
c1.来到R包的下载地址:
https://cran.r-project.org/web/packages/available_packages_by_name.html#available-packages-G
c2:下载 gridGraphviz_0.3.tar.gz
在这里插入图片描述
c3:打开package面板,点击install按钮
[R][bnlearn]高级的贝叶斯网络画图_第1张图片
c4:点击browse,找到下载的位置选择文件,再点击install[R][bnlearn]高级的贝叶斯网络画图_第2张图片

二.用法:

graphviz.plot(x, highlight = NULL, groups, layout = "dot",
  shape = "circle", main = NULL, sub = NULL, render = TRUE)
参数说明:
参数 解释
x 需要画的贝叶斯网络,需要传入bn类型或者bn.fit类型的
highlight 需要突出显示的东西,需要传入list类型的
groups 把一些节点作为一组,让他们靠近一点
layout 布局,有dot, neato, twopi, circo and fdp
shape 贝叶斯网络中的点的形状,有圆形,椭圆形,长方形
main 这个图的标题,显示在图正上方
sub 这个图的副标题,显示在图下方
render x是否返回graph对象(会显示到plot面板),为True返回,False不返回,默认是TRUE

例子0:最朴素的效果

graphviz.plot(dag)

效果:
[R][bnlearn]高级的贝叶斯网络画图_第3张图片
例子1:

graphviz.plot(dag, highlight = list(nodes =c("A","B"),# 需要突出显示的点
                                    arcs =c("A", "B","C", "D","F","E"),# 需要突出显示的边
                                    col = c("#6f88fc"),# 需要突出显示的点边缘和边的颜色
                                    textCol = c("yellow"),# 需要突出显示的点和边的标签颜色
                                    fill = c("#45e3ff"),# 需要突出显示的点的disease
                                    lwd = 5,# 需要突出显示的边的宽度
                                    lty = 3 # 需要突出显示的边的线条类型
                                    ),
              groups = list(c("A","B"),c("C","D"),c("E","F")),# 需要抱团的集合
              layout = "dot",# 布局
              shape ="rectangle")# 点的形状

效果:
[R][bnlearn]高级的贝叶斯网络画图_第4张图片
例子2:

graphviz.plot(dag, highlight = list(nodes =c("A","B"),
                                    arcs =c("A", "B","C", "D","F","E"),
                                    col = c("#6f88fc"),
                                    textCol = c("yellow"),
                                    fill = c("#45e3ff"),
                                    lwd = 5,
                                    lty = 3
                                    ),
              groups = list(c("A","B"),c("C","D"),c("E","F")),
              layout = "dot",
              shape ="circle",
              main = "learning.test",# 标题
              sub = "bayes network", # 副标题
              render = TRUE # 是否返回对象,TRUE就完事了
              )

效果:
[R][bnlearn]高级的贝叶斯网络画图_第5张图片

highlight详解

至少含有以下两种元素:

元素 功能 类型 示例
nodes(点) 让点突出显示 字符向量 highlight = list(nodes =c(A,B))
arcs(边) 让突出显示 字符向量,按照from,to,…from,to的顺序 highlight = list(arcs =c(“A”, “B”,“C”, “D”,“F”,“E”))

例如:

data("learning.test")
dag = model2network("[A][C][F][B|A][D|A:C][E|B:F]")
graphviz.plot(dag, highlight = list(nodes =c("A","B"),
                                    arcs =c("A", "B","C", "D","F","E") 
                                    ))

效果:
[R][bnlearn]高级的贝叶斯网络画图_第6张图片
下面的元素是可选的:

元素 功能 类型 示例
col(颜色) 设置节点边缘的颜色,默认是red 字符串或者数字 col = c(“purple”)或者col = c("#6f88fc"),
textCol(文本颜色) 设置节点和边的标签颜色,默认是red 字符串或者数字 textCol = c(“yellow”)
fill(填充) 设置节点的底色 字符串或者数字 fill = c("#45e3ff")
lwd 设置边的宽度 字符串或者数字 lwd = 5
lty 设置边的线条种类 数字,0,1,2,3,4,5,6分别代表 空白, 实线, “虚线”, 点状线, “虚线点线结合”, 长点线 和双点线 lty = 3

例如:
list(nodes =c(“A”,“B”),# 需要突出显示的点
arcs =c(“A”, “B”,“C”, “D”,“F”,“E”),# 需要突出显示的边
col = c("#6f88fc"),# 需要突出显示的点边缘和边的颜色
textCol = c(“yellow”),# 需要突出显示的点和边的标签颜色
fill = c("#45e3ff"),# 需要突出显示的点的disease
lwd = 5,# 需要突出显示的边的宽度
lty = 3 # 需要突出显示的边的线条类型
)

graphviz.plot(dag, highlight = list(nodes =c("A","B"),# 需要突出显示的点
                                    arcs =c("A", "B","C", "D","F","E"),# 需要突出显示的边
                                    col = c("#6f88fc"),# 需要突出显示的点边缘和边的颜色
                                    textCol = c("yellow"),# 需要突出显示的点和边的标签颜色
                                    fill = c("#45e3ff"),# 需要突出显示的点的disease
                                    lwd = 5,# 需要突出显示的边的宽度
                                    lty = 3 # 需要突出显示的边的线条类型
                                    )
                                    ))

效果:
[R][bnlearn]高级的贝叶斯网络画图_第7张图片

原文传递:

https://www.bnlearn.com/documentation/man/graphviz.plot.html

你可能感兴趣的:(R语言)