【问题标题】:qgraph: multiple images at nodesqgraph:节点处的多个图像
【发布时间】:2013-03-25 18:59:27
【问题描述】:

我最近一直在使用 R 中的 Lavaan 包进行结构方程建模,并使用 semPlot 包来生成路径图,这似乎是 qgraph 的附带条件。

我发现qgraph 支持将图像(例如 jpeg 和 png)绘制为节点。

我的问题是是否可以为路径图中的每个节点绘制不同的图像,如果可以,如何绘制。我希望能够使用我研究项目的图片来填写路径图上的清单变量。谢谢!

【问题讨论】:

    标签: r r-lavaan r-qgraph


    【解决方案1】:

    感谢您查看 semPlot(它仍处于非常发展的状态)。你当然可以做到这一点。确实 semPlot 搭载 qgraph,实际上它基本上是 qgraph 的前端并返回一个 qgraph 对象。您可以将参数发送到 qgraph 或使用不同的参数再次绘制结果。例如:

    library("lavaan")
    
    # Example 5.8 from mplus user guide:
    Data <- read.table("http://www.statmodel.com/usersguide/chap5/ex5.8.dat")
    names(Data) <- c(paste("y", 1:6, sep=""),
                     paste("x", 1:3, sep=""))
    
    # Model:
    model.Lavaan <- 'f1 =~ y1 + y2 + y3
    f2 =~ y4 + y5 + y6
    f1 + f2 ~ x1 + x2 + x3 '
    
    # Run Lavaan:
    library("lavaan")
    fit <- lavaan:::cfa(model.Lavaan, data=Data, std.lv=TRUE)
    
    # Download R logo:
    download.file("http://cran.r-project.org/Rlogo.jpg", file <- tempfile(fileext = ".jpg"), 
                  mode = "wb")
    
    # Plot path diagram and store qgraph object:
    Graph <- semPaths(fit,title=FALSE, curvePivot = TRUE)
    
    # plot qgraph again with images:
    qgraph(Graph, images = file, labels = FALSE)
    

    如果您想为每个节点使用不同的图像,您可以为图像提供一个向量,其中包含按节点顺序排列的每个节点的图像文件名。要找出节点顺序,您可以这样做:

    # To see which nodes are which:
    Graph$graphAttributes$Nodes$labels
    

    【讨论】:

    • 非常感谢!我还有一个问题,对此我很陌生。假设我想导入自己的 jpeg 文件(而不是下载一个),使用 jpeg 包的 readJPEG 和图形包中的 rasterImage 最简单,还是有更好的方法?
    • 您应该只提供图像的文件名/路径。这里的下载只是举个例子,注意fileqgraph调用中使用的只是一个链接到临时文件的字符串。
    猜你喜欢
    • 2021-04-25
    • 2011-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-14
    • 1970-01-01
    • 1970-01-01
    • 2017-05-31
    相关资源
    最近更新 更多