The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
(Version 0.4.0, updated on 2026-07-20, release history)

Helper functions for modifying (postprocessing) plots generated by
semPlot::semPaths() from the semPlot
package.
The latest stable version can be installed from CRAN:
install.packages("semptools")The latest development version at GitHub can be installed by
remotes::install_github():
remotes::install_github("sfcheung/semptools")To read the guides (vignettes) on how to use the functions, you can build the vignettes locally when installing the package:
remotes::install_github("sfcheung/semptools", build_vignettes = TRUE)You can also find the guides under Articles of the Github page of this package.
semPlot::semPaths() is a very useful function for
visualizing structural equation models. We use it a lot. The output is a
qgraph object which is highly customizable. Our area is in
psychology and some users in this area may not know how to customize the
graphs in aspects relevant to psychology. Therefore, we think it would
be useful for users in psychology, including us, to have some functions
for customizing the graphs from semPlot::semPaths(),
without knowing the technical details of qgraph.
We though about the tasks we usually want to do with a
semPlot::semPaths() graph, and wrote one function for each
task. We wrote the functions such that all of them work by
postprocessing a semPlot::semPaths() graph: receive a
semPlot::semPaths() graph, modify it, and return a modified
semPlot::semPaths() graph. This also allows users to use
the the R pipe operator |> available since R 4.1.x (or
the %>% operator from the magrittr package)
to chain together modifications. For example:
modified_graph <- original_graph |>
task_1() |>
task_2(other_arguments) |>
task_3()In psychology, two typical models are confirmatory factor analysis
model and structural models with latent factors. Therefore, we also
wrote two functions, set_cfa_layout() and
set_sem_layout(), that can combine several common tasks
together, such as specifying the positions of the latent factors and
adjusting the positions of the indicators.
We also wrote the functions in a way that users do not need to know
the technical detail (e.g., the position of the path in the list of all
paths). For example, if a user wants to move the path coefficient of the
path from x to y closer to y, the
user only needs to tell the function that it is the path from
x to y. The function will find which path it
is in the qgraph object.
These are some functions included so far:
mark_se(): Add the standard errors to parameter
estimates.
mark_ci(): Add the confidence intervals to parameter
estimates.
mark_sig(): Add asterisks (“*”, “**”, “***”) based
on \(p\)-values of parameter
estimates.
add_rsq(): Add R-squares (and remove the error
variances) to endogenous variables.
rotate_resid(): Rotate the residuals of selected
variables.
set_curve(): Change the curvature of selected
paths.
set_edge_color(): Change the colors of selected
paths.
set_edge_line_type(),
set_edge_line_width(): Change the line types (e.g., solid,
dashed, dotted) and line widths of selected paths.
set_edge_label(), set_edge_label_bg(),
set_edge_label_size(): Change the labels of selected paths
directly.
set_edge_label_position(): Move the parameter labels
of selected paths along the paths.
safe_edge_label_position(): Try to move edge labels
(e.g., regression coefficients) to prevent overlapping of
labels.
safe_resid_position(): Try to rotate residuals of
nodes to prevent overlapping.
set_edge_attribute(): A generic function to change
any named attributes of selected paths.
change_node_label(): Change the labels of
nodes.
set_node_label_color(),
set_node_label_size(): Change the colors and sizes of the
labels of selected nodes.
set_node_color(), set_node_height(),
set_node_shape(), set_node_size(),
set_node_width(): Change the aesthetic aspects of selected
nodes.
set_node_border_color(),
set_node_border_width(): Change the colors and widths of
the borders of nodes (e.g., the color and width of the line of a
square).
drop_nodes() and keep_nodes(): Drop or
keeps nodes (e.g., drop all control variables).
move_node(): “Move” (change the positions of)
selected nodes.
node_labels_equal_scale(): Make all labels of nodes
have the same font size.
set_node_attribute(): A generic function to change
any named attributes of selected nodes.
set_cfa_layout(): A function for typical
confirmatory factor analysis models. It can be used for specifying the
orders of the indicators and factors, specifying the positions of the
factors, setting the curvatures of the interfactor covariances, set the
position of all loadings, and setting the orientation of the model
(down, left, up, or right).
set_sem_layout(): A function for typical SEM models.
It can be used for specifying the orders of the indicators and factors,
specifying the positions of the factors using a grid, specifying the
orientation of each factor’s indicators (down, left, up, right), fine
tuning the positions of indicators of selected factor, setting the
curvatures of selected paths, and specifying the position of all or
selected loadings.
quick_simple_mediation(),
quick_serial_mediation(), and
quick_parallel_mediation(): Functions for common mediation
models. They will try to set the positions of nodes automatically. The
positions of nodes can be adjusted by move_node() to
achieve the desired layout.
layout_matrix(): A helper to specify how to place
the nodes.
set_graph_margins(): Change the margins of a
plot.
rescale_layout(): Rescale a plot to fit the plot
area.
See the Get Started to learn more about these and other functions.
Since version 0.3.3.17, most functions support figures of multigroup
models, which are stored as a list of qgraph plots.
This package is still under development. There will be bugs, and there are limitations. Please post your comments and suggestions as issues at GitHub.
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.