Move the nodes in an
plot generated by semPlot::semPaths()
.
Arguments
- semPaths_plot
A qgraph::qgraph object generated by semPlot::semPaths, or a similar qgraph object modified by other semptools functions.
- move_by
A named list. The names are the names of nodes to be moved. Each element of the list can be either a named numeric vector or an unnamed vector of two numbers. If a named vector,
x
is the horizontal change in the position (e.g., .25 means moving to the right by .25, and -.5 means moving to the left by .5), andy
is the vertical change (e.g., .5 means moving up by .5, and -.1 means moving down by .1). If unnamed, then the vector must have two numbers, the first for the horizontal move (x
) and the second for the vertical move. The value is interpreted based on the unit of the plot, usually from -1 to 1 forx
andy
, with 0 being the center of the plot.
Value
A qgraph::qgraph based on the original one, with the selected nodes moved.
Details
Modify a qgraph::qgraph object generated by semPlot::semPaths and move selected nodes.
The change assumes that the layout is defined with 0 as the center, -1 to 1 from left to right, and from bottom to top.
Examples
mod_pa <-
'x1 ~~ x2
x3 ~ x1 + x2
x4 ~ x1 + x3
'
fit_pa <- lavaan::sem(mod_pa, pa_example)
lavaan::parameterEstimates(fit_pa)[, c("lhs", "op", "rhs", "est", "pvalue")]
#> lhs op rhs est pvalue
#> 1 x1 ~~ x2 0.005 0.957
#> 2 x3 ~ x1 0.537 0.000
#> 3 x3 ~ x2 0.376 0.000
#> 4 x4 ~ x1 0.111 0.382
#> 5 x4 ~ x3 0.629 0.000
#> 6 x3 ~~ x3 0.874 0.000
#> 7 x4 ~~ x4 1.194 0.000
#> 8 x1 ~~ x1 0.933 0.000
#> 9 x2 ~~ x2 1.017 0.000
m <- matrix(c("x1", NA, NA,
NA, "x3", "x4",
"x2", NA, NA), byrow = TRUE, 3, 3)
p_pa <- semPlot::semPaths(fit_pa, whatLabels="est",
style = "ram",
nCharNodes = 0, nCharEdges = 0,
layout = m)
p_changed <- move_node(p_pa,
list(x3 = c(x = -.25, y = -.25),
x4 = c(y = .5)))
plot(p_changed)