我是第一次发帖,但我是这个网站的长期学习者。这是我的问题的第一次没有被反向工程师-可以从以前的帖子,所以我希望有人能帮助我解决它。
我试图绘制爬山搜索算法(hc来自R中的bnlearn包)的结果,运行在相关矩阵上,作为Reingold树图。
假设我跑:
hc.obj<-hc(corr.matrix)
hc.plot<-qgraph(hc.obj, directed = "TRUE", layout = "spring")我得到了一个弗鲁奇曼-Reingold布局的定向关系,没有问题。
但是无论我如何格式化hc.obj中的信息,我都无法得到一个树布局来工作。例如,使用"layout = tree“运行上面的代码,我得到了错误:”1中的错误,1:不正确的维数“。
下面是一个可重复的例子:
require("bnlearn")
require("qgraph")
cm <- matrix(runif(100), ncol=10)
cm <- (cm * lower.tri(cm)) + t(cm * lower.tri(cm))
diag(cm) <- 1
cm.df<-as.data.frame(cm)
hc.obj<-hc(cm.df)
hc.plot<-qgraph(hc.obj, directed = "TRUE", layout = "tree")类似地,如果我试图以以下方式运行igraph:
layout_as_tree(hc.obj)我得到了错误"Error in layout_as_tree(hc.obj):不是图形对象“
发布于 2016-07-06 01:09:39
看起来,您正在尝试使用绘图函数来做一些他们不打算做的事情。
hc.obj是一个bn类的模型对象,而qplot()则支持以下内容:
...either是称重矩阵还是编辑师。也可以是类"sem“(sem)、"mod”(sem)、"lavaan“(lavaan)、”主体“(心理学)、"loadings”(stats)、"factanal“(stats)、"graphNEL”(里格维兹)、"pcAlgo“(pcalg)、”pcAlgo“(巨型)、"select”(巨型)或glasso的输出。
你可以,但是对象。一种方法是简单地使用plot()。
if(!require(pacman)) install.packages("pacman")
pacman::p_load(qgraph,bnlearn,Rgraphviz)
cm <- matrix(runif(100), ncol=10)
cm <- (cm * lower.tri(cm)) + t(cm * lower.tri(cm))
diag(cm) <- 1
cm.df<-as.data.frame(cm)
hc.obj<-hc(cm.df)
plot(hc.obj)

另一种方法是使用graphviz.plot()。
bnlearn::graphviz.plot(hc.obj)

如果您进行搜索或查看相关的CRAN任务视图,您可能会发现更多支持bn类对象的包。
https://stackoverflow.com/questions/38214862
复制相似问题