可能有一种更简单的方法可以做到这一点(并且忽略这样做是否明智) - 您可以做到这一点的一种方法是在绘图之前从对象中删除节点。
使用您的问题Rotate Edges in semPaths/qgraph 中的 Mplus 示例
library(qgraph)
library(semPlot)
library(MplusAutomation)
# This downloads an output file from Mplus examples
download.file("http://www.statmodel.com/usersguide/chap5/ex5.8.out",
outfile <- tempfile(fileext = ".out"))
# Unadjusted plot
s <- semPaths(outfile, intercepts = FALSE)
在上面对 , 的调用中semPaths
,outfile
属于 class character
,因此该行(靠近代码的开头semPaths
)
if (!"semPlotModel" %in% class(object))
object <- do.call(semPlotModel, c(list(object), modelOpts))
从 中返回对象semPlot:::semPlotModel.mplus.model(outfile)
。这是一流的"semPlotModel"
。
所以想法是先创建这个对象,修改它,然后将这个对象传递给semPaths
.
# Call semPlotModel on your Mplus file
obj <- semPlot:::semPlotModel.mplus.model(outfile)
# obj <- do.call(semPlotModel, list(outfile)) # this is more general / not just for Mplus
# Remove one factor (F1) from object@Pars - need to check lhs and rhs columns
idx <- apply(obj@Pars[c("lhs", "rhs")], 1, function(i) any(grepl("F1", i)))
obj@Pars <- obj@Pars[!idx, ]
class(obj)
obj
现在属于类"semPlotModel"
,可以直接传递给semPaths
s <- semPaths(obj, intercepts = FALSE)
您可以使用str(s)
查看此返回对象的结构。