---
title: "Basic example"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{Basic example}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---

```{r, include = FALSE}
knitr::opts_chunk$set(
  collapse = TRUE,
  fig.width = 7,
  fig.height = 5,
  out.width = "100%",
  background = "white",
  fig.bg = "white",
  dev = "jpeg",
  dpi = 100,
  comment = "#>"
)
suppressPackageStartupMessages({
  library("cograph")
})
old_opts <- options()
options(scipen = 99, digits = 2, max.print = 30, width = 83)
```

This vignette demonstrates the basic usage of the `cograph` package using a transition probability matrix from a learning analytics study.

```{r}
library(cograph)
```

# Create a transition matrix

We use a simulated Markov transition matrix representing student learning behavior transitions across nine states.

```{r}
states <- c("Read", "Watch", "Try", "Ask", "Discuss",
            "Review", "Search", "Reflect", "Submit")

set.seed(42)
mat <- matrix(c(
  0.00, 0.25, 0.15, 0.00, 0.10, 0.00, 0.08, 0.00, 0.00,
  0.10, 0.00, 0.30, 0.00, 0.00, 0.12, 0.00, 0.00, 0.00,
  0.00, 0.10, 0.00, 0.20, 0.00, 0.00, 0.00, 0.15, 0.25,
  0.05, 0.00, 0.10, 0.00, 0.30, 0.00, 0.00, 0.00, 0.00,
  0.00, 0.00, 0.00, 0.15, 0.00, 0.20, 0.00, 0.18, 0.00,
  0.12, 0.08, 0.00, 0.00, 0.00, 0.00, 0.10, 0.00, 0.20,
  0.00, 0.00, 0.15, 0.00, 0.00, 0.10, 0.00, 0.00, 0.12,
  0.00, 0.00, 0.10, 0.00, 0.12, 0.00, 0.00, 0.00, 0.28,
  0.00, 0.00, 0.00, 0.00, 0.00, 0.10, 0.00, 0.05, 0.00
), nrow = 9, byrow = TRUE)
rownames(mat) <- colnames(mat) <- states
```

# Example 1: Default plot

```{r}
splot(mat, node_size = 9)
```

# Example 2: Circle layout

```{r}
splot(mat, layout = "circle", node_size = 9)
```

# Example 3: With edge labels

```{r}
splot(mat, layout = "circle", node_size = 9, edge_labels = TRUE)
```

# Example 4: Themes

```{r}
splot(mat, node_size = 9, theme = "dark", title = "Dark")
splot(mat, node_size = 9, theme = "minimal", title = "Minimal")
splot(mat, node_size = 9, theme = "colorblind", title = "Colorblind")
```

# Example 5: Custom node colors

```{r}
splot(mat, layout = "circle", node_size = 9,
      node_fill = palette_pastel(9))
```

# Example 6: Node shapes

```{r}
splot(mat, layout = "circle", node_size = 9,
      node_shape = c("circle", "square", "triangle", "diamond",
                     "star", "pentagon", "hexagon", "heart", "circle"),
      node_fill = palette_colorblind(9))
```

# Example 7: Dotted edges

```{r}
splot(mat, node_size = 9, edge_style = 3)
```

# Example 8: Dashed edge start

```{r}
splot(mat, node_size = 9, edge_start_style = "dashed")
```

# Example 9: Edge labels with donuts

```{r}
splot(mat, node_size = 9, edge_labels = TRUE,
      edge_label_size = 0.6,
      edge_positive_color = "#1976D2",
      edge_negative_color = "#D32F2F",
      donut_fill = runif(9),
      donut_color = palette_rainbow(9),
      theme = "minimal")
```

# Example 10: Grid graphics with soplot

```{r}
soplot(mat, node_size = 9, layout = "oval")
```

# Example 11: Saving

```{r, eval = FALSE}
splot(mat, node_size = 9, filetype = "png",
      filename = file.path(tempdir(), "network"), width = 8, height = 8)
```

```{r, include = FALSE}
options(old_opts)
```
