## ---- include = FALSE---------------------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)
library(tidySEM)
library(lavaan)
library(dplyr)
library(ggplot2)
include_code <- function(expr){
  txt <- deparse(substitute(expr))
  eval.parent(expr)
  cat(c("``` r", txt, "```"), sep = "\n")
}
generate_pngs <- TRUE

## ---- echo = TRUE, eval = FALSE-----------------------------------------------
#  graph_sem(layout = matrix("x")) + coord_fixed()

## ----echo = FALSE, out.width='20%'--------------------------------------------
p <- graph_sem(layout = matrix("x")) + coord_fixed()
if(generate_pngs) ggsave("var_obs.png", p, device = "png", width= 1, height = .7)
knitr::include_graphics("var_obs.png")

## ---- echo = TRUE, eval = FALSE-----------------------------------------------
#  graph_sem(nodes = data.frame(name = "x", shape = "oval"), layout = matrix("x"), fix_coord = TRUE)

## ----echo = FALSE, out.width='20%'--------------------------------------------
p <- graph_sem(nodes = data.frame(name = "x", shape = "oval"), layout = matrix("x"), fix_coord = TRUE)
if(generate_pngs) ggsave("var_lat.png", p, device = "png", width= 1, height = .7)
knitr::include_graphics("var_lat.png")

## ----echo = FALSE, out.width='20%'--------------------------------------------
p <- ggplot(data.frame(x = 1, y = 1, xend = 4, yend = 1), aes(x=x, y=y,xend=xend, yend=yend)) +geom_segment(arrow = arrow(type = "closed"))+theme_void()
if(generate_pngs) ggsave("arrow.png", p, device = "png", width= 3, height = .7)
knitr::include_graphics("arrow.png")

## ----echo = FALSE, out.width='20%'--------------------------------------------
p <- ggplot(data.frame(x = 1, y = 1, xend = 2, yend = 1), aes(x=x, y=y,xend=xend, yend=yend)) + geom_curve(linetype = 2)+theme_void()+scale_y_continuous(limits = c(0,2))
if(generate_pngs) ggsave("curve.png", p, device = "png", width= 4, height = 2)
knitr::include_graphics("curve.png")

## ----echo = FALSE, out.width='10%'--------------------------------------------
if(generate_pngs){
  p <- tidySEM:::.plot_variances(p = ggplot(NULL), df = data.frame(edge_xmin = 1, edge_ymin = 1,
                                                   edge_xmax = 1, edge_ymax = 1,
                                                   connect_from = "top",
                                                   connect_to = "top", label = "e",
                                                   arrow = "both"), diameter = 1,
                          text_size = 8)+theme_void()
  ggsave("error.png", p, device = "png", width= 2, height = 2)
} 
knitr::include_graphics("error.png")

## ----echo = TRUE, eval = FALSE------------------------------------------------
#  df <- iris[, 1:2]
#  names(df) <- c("x", "y")
#  sem("y ~ x", df) %>%
#    graph_sem(spacing_x = 2.5, fix_coord = TRUE)

## ----echo = FALSE, out.width='50%'--------------------------------------------
df <- iris[, 1:2]
names(df) <- c("x", "y")
sem("y ~ x", df) %>%
  graph_sem(spacing_x = 2.5, fix_coord = TRUE) -> p
if(generate_pngs) ggsave("mod_reg.png", p, device = "png", width= 4, height = 1)
knitr::include_graphics("mod_reg.png")

## ----echo = TRUE, eval=FALSE--------------------------------------------------
#  df <- iris[ , c(1,3:4)]
#  names(df) <- paste0("y_", 1:3)
#  
#  tidy_sem(df) %>%
#    measurement() %>%
#    estimate_lavaan() %>%
#    graph_sem()

## ----echo = FALSE, warning = FALSE, message = FALSE, out.width='50%'----------
df <- iris[ , c(1,3:4)]
names(df) <- paste0("y_", 1:3)

tidy_sem(df) %>%
  measurement() %>%
  estimate_lavaan() %>%
  graph_sem(fix_coord = TRUE) -> p
if(generate_pngs) ggsave("mod_meas.png", p, device = "png", width= 4, height = 4)
knitr::include_graphics("mod_meas.png")

## ----eval= FALSE--------------------------------------------------------------
#  df <- iris[ , 1:4]
#  names(df) <- c("y_1", "x", "y_2", "y_3")
#  
#  tidy_sem(df) %>%
#    measurement() %>%
#    add_paths(y ~ x, x ~~ x, x ~1) %>%
#    estimate_lavaan() %>%
#    graph_sem()

## ----echo = FALSE, warning = FALSE, message = FALSE, out.width='70%'----------
df <- iris[ , 1:4]
names(df) <- c("y_1", "x", "y_2", "y_3")
set.seed(58)
tidy_sem(df) %>%
  measurement() %>%
  add_paths(y ~ x, x ~~ x, x ~1) %>%
  estimate_lavaan() %>%
  graph_sem(fix_coord = TRUE) -> p
if(generate_pngs) ggsave("mod_sem1.png", p, device = "png", width= 6, height = 6)
knitr::include_graphics("mod_sem1.png")

## ----eval= FALSE--------------------------------------------------------------
#  tidy_sem(df) %>%
#    measurement() %>%
#    add_paths(y ~ x, x ~~ x) %>%
#    estimate_lavaan() %>%
#    graph_sem(layout =
#                get_layout("",     "x",    "",
#                           "",     "y",    "",
#                           "y_1", "y_2", "y_3", rows = 3))

## ----echo = FALSE, warning = FALSE, message = FALSE, out.width='70%'----------
tidy_sem(df) %>%
  measurement() %>%
  add_paths(y ~ x, x ~~ x) %>%
  estimate_lavaan() %>%
  graph_sem(layout =
              get_layout("",     "x",    "",
                         "",     "y",    "",
                         "y_1", "y_2", "y_3", rows = 3), fix_coord = TRUE) -> p
if(generate_pngs) ggsave("mod_sem2.png", p, device = "png", width= 6, height = 6)
knitr::include_graphics("mod_sem2.png")

