Making graphs in R - Sacha Epskamp · Weights matrices I The inputargument is the input. This can...

56
Making graphs in R Using the qgraph package Sacha Epskamp University of Amsterdam Department of Psychological Methods 15-10-2013

Transcript of Making graphs in R - Sacha Epskamp · Weights matrices I The inputargument is the input. This can...

Page 1: Making graphs in R - Sacha Epskamp · Weights matrices I The inputargument is the input. This can be a weights matrix I A weights matrix is a square n by n matrix in which each element

Making graphs in RUsing the qgraph package

Sacha Epskamp

University of AmsterdamDepartment of Psychological Methods

15-10-2013

Page 2: Making graphs in R - Sacha Epskamp · Weights matrices I The inputargument is the input. This can be a weights matrix I A weights matrix is a square n by n matrix in which each element

All codes in these slides were run using R version 3.1.0(2014-04-10) and qgraph version 1.2.5 and were made onWindows 7 x64 x86-64 build 9200.

Get the latest version of R from www.r-project.org and the latestversion of qgraph from CRAN:

install.packages("qgraph",dep=TRUE)

Page 3: Making graphs in R - Sacha Epskamp · Weights matrices I The inputargument is the input. This can be a weights matrix I A weights matrix is a square n by n matrix in which each element

Make sure you can load qgraph:

library("qgraph")

And that you have version 1.2.3 or higher:

packageDescription('qgraph')$Version

## [1] "1.2.5"

Page 4: Making graphs in R - Sacha Epskamp · Weights matrices I The inputargument is the input. This can be a weights matrix I A weights matrix is a square n by n matrix in which each element

If this fails, make sure you have the latest (2.15) version of Rand that all depended/imported/suggested packages areinstalled (see CRAN).

Page 5: Making graphs in R - Sacha Epskamp · Weights matrices I The inputargument is the input. This can be a weights matrix I A weights matrix is a square n by n matrix in which each element

Defaults

Note that the following defaults are set for this presentation:

options(qgraph = list(

border.width = 2,asize = 8,unCol = "black",vsize = 10,esize = 3)

)

So the codes can create different looking graphs on yourscreen!

Page 6: Making graphs in R - Sacha Epskamp · Weights matrices I The inputargument is the input. This can be a weights matrix I A weights matrix is a square n by n matrix in which each element

Help on R

Do it yourself. . .I For basic understanding of R: Read through a R manual!

I How do I make a matrix?I How do I index an object?I What is a list?I Try a short one first! (R for beginners)

I Help on how to use a function: Use the ? function (e.g.?matrix)

I How do I define a matrix by row?I How do I set mean() to omit NA’s?

I Find a certain function: Use the ?? functionI What is a function to reduce a string to a certain amount of

characters?I ??trim

I Or use google!

Page 7: Making graphs in R - Sacha Epskamp · Weights matrices I The inputargument is the input. This can be a weights matrix I A weights matrix is a square n by n matrix in which each element

Help on R

. . . or ask for help!I Stackoverflow websites (see next slide)I For problems concerning specific packages: Mail the

maintainerI For short questions, you can use Twitter or Google+ with

hashtag #rstats

Page 8: Making graphs in R - Sacha Epskamp · Weights matrices I The inputargument is the input. This can be a weights matrix I A weights matrix is a square n by n matrix in which each element

Stackexchange

Stackexchange is a series of free question and answerwebsites on many different topics. Two are very useful forwhenever you get stuck in R:

For programming technical questions regarding R see:http://stackoverflow.com/

For statistical questions regarding R see:http://crossvalidated.com/

In both of these make sure you use the tag r and include areproducible example:http://stackoverflow.com/q/5963269/567015

Page 9: Making graphs in R - Sacha Epskamp · Weights matrices I The inputargument is the input. This can be a weights matrix I A weights matrix is a square n by n matrix in which each element

Graphs

I A graph is a network that consists of n nodes (or vertices)that are connected with m edges.

I Each edge can have a weight indicating the strength ofthat connection

I An edge can be directed (have an arrow) or undirected

Page 10: Making graphs in R - Sacha Epskamp · Weights matrices I The inputargument is the input. This can be a weights matrix I A weights matrix is a square n by n matrix in which each element

Directed Undirected

Unw

eigh

ted

Wei

ghte

d

●●

●●

●●

●●

●●

●●

1

2

3

4

5

6

7

8

9

10

●●

●●

●●

●●

●●

●●

1

2

3

4

5

6

7

8

9

10

●●

●●

●●

●●

●●

●●

1

2

3

4

5

6

7

8

9

10

●●

●●

●●

●●

●●

●●

1

2

3

4

5

6

7

8

9

10

Page 11: Making graphs in R - Sacha Epskamp · Weights matrices I The inputargument is the input. This can be a weights matrix I A weights matrix is a square n by n matrix in which each element

Directed Undirected

Unw

eigh

ted

Wei

ghte

d

●●

●●

●●

●●

●●

●●

1

2

3

4

5

6

7

8

9

10

●●

●●

●●

●●

●●

●●

1

2

3

4

5

6

7

8

9

10

●●

●●

●●

●●

●●

●●

1

2

3

4

5

6

7

8

9

10

●●

●●

●●

●●

●●

●●

1

2

3

4

5

6

7

8

9

10

Page 12: Making graphs in R - Sacha Epskamp · Weights matrices I The inputargument is the input. This can be a weights matrix I A weights matrix is a square n by n matrix in which each element

The qgraph() function

I The main function in qgraph is qgraph()I Most other functions are either wrapping functions usingqgraph() or functions used in qgraph()

I The qgraph() function requires only one argument(input)

I A lot of other arguments can be specified, but these are alloptional

Usage:

qgraph( input, ... )

Page 13: Making graphs in R - Sacha Epskamp · Weights matrices I The inputargument is the input. This can be a weights matrix I A weights matrix is a square n by n matrix in which each element

Weights matrices

I The input argument is the input. This can be a weightsmatrix

I A weights matrix is a square n by n matrix in which eachelement indicates the relationship between two variables

I Any relationship can be used as long as:I A 0 indicates no relationshipI Absolute negative values are similar in strength to positive

valuesI We will first look at unweighted graphs, in which case the

weights matrix is the same as an adjacency matrixI A 1 indicates a connectionI A 0 indicates a connectionI Rows indicate the node of originI Columns indicate the node of destinationI By default the diagonal is omittedI By default, a symetrical weights matrix is interpreted as an

unweighted graph

Page 14: Making graphs in R - Sacha Epskamp · Weights matrices I The inputargument is the input. This can be a weights matrix I A weights matrix is a square n by n matrix in which each element

Weights matrices

input <- matrix(c(0,1,1,0,0,1,0,0,0),3,3,byrow=TRUE)

print(input)

## [,1] [,2] [,3]## [1,] 0 1 1## [2,] 0 0 1## [3,] 0 0 0

qgraph(input)

1

23

Page 15: Making graphs in R - Sacha Epskamp · Weights matrices I The inputargument is the input. This can be a weights matrix I A weights matrix is a square n by n matrix in which each element

Weights matrices

Exercise: Create this graph

1

2

3

4

5

6

7

8

The layout should be right automatically, only use oneargument in qgraph()

Page 16: Making graphs in R - Sacha Epskamp · Weights matrices I The inputargument is the input. This can be a weights matrix I A weights matrix is a square n by n matrix in which each element

Weights matrices

To make this graph, we need this matrix:

## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]## [1,] 0 1 0 0 0 0 0 0## [2,] 0 0 1 0 0 0 0 0## [3,] 0 0 0 1 0 0 0 0## [4,] 0 0 0 0 1 0 0 0## [5,] 0 0 0 0 0 1 0 0## [6,] 0 0 0 0 0 0 1 0## [7,] 0 0 0 0 0 0 0 1## [8,] 1 0 0 0 0 0 0 0

Page 17: Making graphs in R - Sacha Epskamp · Weights matrices I The inputargument is the input. This can be a weights matrix I A weights matrix is a square n by n matrix in which each element

Weights matrices

These matrices become quite large, so manually defining thematrix is not effective. So some tricks are needed to make thematrix:

input <- matrix(0,8,8)input[1,2] <- 1input[2,3] <- 1input[3,4] <- 1input[4,5] <- 1input[5,6] <- 1input[6,7] <- 1input[7,8] <- 1input[8,1] <- 1

Page 18: Making graphs in R - Sacha Epskamp · Weights matrices I The inputargument is the input. This can be a weights matrix I A weights matrix is a square n by n matrix in which each element

Weights matrices

print(input)

## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]## [1,] 0 1 0 0 0 0 0 0## [2,] 0 0 1 0 0 0 0 0## [3,] 0 0 0 1 0 0 0 0## [4,] 0 0 0 0 1 0 0 0## [5,] 0 0 0 0 0 1 0 0## [6,] 0 0 0 0 0 0 1 0## [7,] 0 0 0 0 0 0 0 1## [8,] 1 0 0 0 0 0 0 0

Page 19: Making graphs in R - Sacha Epskamp · Weights matrices I The inputargument is the input. This can be a weights matrix I A weights matrix is a square n by n matrix in which each element

Weights matrices

You can also change matrices manually (doesn’t work inRStudio):

input <- matrix(0,8,8)fix(input)

Or read the matrix from a text file!

Page 20: Making graphs in R - Sacha Epskamp · Weights matrices I The inputargument is the input. This can be a weights matrix I A weights matrix is a square n by n matrix in which each element

Weights matrices

First make the matrix in a spreadsheet program (hereLibreOffice)

Page 21: Making graphs in R - Sacha Epskamp · Weights matrices I The inputargument is the input. This can be a weights matrix I A weights matrix is a square n by n matrix in which each element

Weights matrices

Next save as or export

Page 22: Making graphs in R - Sacha Epskamp · Weights matrices I The inputargument is the input. This can be a weights matrix I A weights matrix is a square n by n matrix in which each element

Weights matricesSave as CSV (comma delimited text file) or tab delimited:

Page 23: Making graphs in R - Sacha Epskamp · Weights matrices I The inputargument is the input. This can be a weights matrix I A weights matrix is a square n by n matrix in which each element

Weights matrices

Read in R (for tab delimited use read.table():

input <- read.csv("adj.csv",header=FALSE)print(input)

## V1 V2 V3 V4 V5 V6 V7 V8## 1 0 1 0 0 0 0 0 0## 2 0 0 1 0 0 0 0 0## 3 0 0 0 1 0 0 0 0## 4 0 0 0 0 1 0 0 0## 5 0 0 0 0 0 1 0 0## 6 0 0 0 0 0 0 1 0## 7 0 0 0 0 0 0 0 1## 8 1 0 0 0 0 0 0 0

Page 24: Making graphs in R - Sacha Epskamp · Weights matrices I The inputargument is the input. This can be a weights matrix I A weights matrix is a square n by n matrix in which each element

Weights matrices

These methods are not reproducible. Scripts should notdepend on manual input. An easy way to change this is to firstdefine a matrix. then run dput() on the object and use thatresult in your script:

dput(input)

## structure(c(0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,## 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,## 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,## 0, 0, 0, 1, 0), .Dim = c(8L, 8L))

Page 25: Making graphs in R - Sacha Epskamp · Weights matrices I The inputargument is the input. This can be a weights matrix I A weights matrix is a square n by n matrix in which each element

Weights matrices

input2 <- structure(c(0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,0, 0, 0, 1, 0), .Dim = c(8L, 8L))

print(input2)

## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]## [1,] 0 1 0 0 0 0 0 0## [2,] 0 0 1 0 0 0 0 0## [3,] 0 0 0 1 0 0 0 0## [4,] 0 0 0 0 1 0 0 0## [5,] 0 0 0 0 0 1 0 0## [6,] 0 0 0 0 0 0 1 0## [7,] 0 0 0 0 0 0 0 1## [8,] 1 0 0 0 0 0 0 0

Page 26: Making graphs in R - Sacha Epskamp · Weights matrices I The inputargument is the input. This can be a weights matrix I A weights matrix is a square n by n matrix in which each element

Weights matrices

Exercise: Create this graph

1

2

3

4

5

6

7

8

Page 27: Making graphs in R - Sacha Epskamp · Weights matrices I The inputargument is the input. This can be a weights matrix I A weights matrix is a square n by n matrix in which each element

Weights matrices

## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]## [1,] 1 0 0 0 0 0 0 0## [2,] 1 0 0 0 0 0 0 0## [3,] 1 0 0 0 0 0 0 0## [4,] 1 0 0 0 0 0 0 0## [5,] 1 0 0 0 0 0 0 0## [6,] 1 0 0 0 0 0 0 0## [7,] 1 0 0 0 0 0 0 0## [8,] 1 0 0 0 0 0 0 0

Page 28: Making graphs in R - Sacha Epskamp · Weights matrices I The inputargument is the input. This can be a weights matrix I A weights matrix is a square n by n matrix in which each element

The directed argument

I The directed argument can be used to force a directed(TRUE) or undirected (FALSE) graph

I This can also be specified per edge in a matrix

Page 29: Making graphs in R - Sacha Epskamp · Weights matrices I The inputargument is the input. This can be a weights matrix I A weights matrix is a square n by n matrix in which each element

The directed argument

input<- matrix(1,3,3)print(input)

## [,1] [,2] [,3]## [1,] 1 1 1## [2,] 1 1 1## [3,] 1 1 1

qgraph(input)

1

23

Page 30: Making graphs in R - Sacha Epskamp · Weights matrices I The inputargument is the input. This can be a weights matrix I A weights matrix is a square n by n matrix in which each element

The directed argument

print(input)

## [,1] [,2] [,3]## [1,] 1 1 1## [2,] 1 1 1## [3,] 1 1 1

qgraph(input,directed=TRUE)

1

2

3

Page 31: Making graphs in R - Sacha Epskamp · Weights matrices I The inputargument is the input. This can be a weights matrix I A weights matrix is a square n by n matrix in which each element

The directed argument

print(input)

## [,1] [,2] [,3]## [1,] 1 1 1## [2,] 1 1 1## [3,] 1 1 1

dir <- matrix(c(FALSE,TRUE,FALSE,TRUE,FALSE,FALSE,FALSE,FALSE,FALSE)

,3,3,byrow=TRUE)print(dir)

## [,1] [,2] [,3]## [1,] FALSE TRUE FALSE## [2,] TRUE FALSE FALSE## [3,] FALSE FALSE FALSE

qgraph(input,directed=dir)

1

23

Page 32: Making graphs in R - Sacha Epskamp · Weights matrices I The inputargument is the input. This can be a weights matrix I A weights matrix is a square n by n matrix in which each element

The bidirectional argument

I Multiple directed edges between two nodes are curvedI To change this behavior, bidirectional can be set to

TRUEI Can also be a matrix

Page 33: Making graphs in R - Sacha Epskamp · Weights matrices I The inputargument is the input. This can be a weights matrix I A weights matrix is a square n by n matrix in which each element

The bidirectional argument

print(input)

## [,1] [,2] [,3]## [1,] 1 1 1## [2,] 1 1 1## [3,] 1 1 1

qgraph(input,directed=TRUE,bidirectional=TRUE)

1

2

3

Page 34: Making graphs in R - Sacha Epskamp · Weights matrices I The inputargument is the input. This can be a weights matrix I A weights matrix is a square n by n matrix in which each element

The bidirectional argument

print(input)

## [,1] [,2] [,3]## [1,] 1 1 1## [2,] 1 1 1## [3,] 1 1 1

bidir <- matrix(c(FALSE,TRUE,FALSE,TRUE,FALSE,FALSE,FALSE,FALSE,FALSE)

,3,3,byrow=TRUE)print(bidir)

## [,1] [,2] [,3]## [1,] FALSE TRUE FALSE## [2,] TRUE FALSE FALSE## [3,] FALSE FALSE FALSE

qgraph(input,directed=TRUE,bidirectional=bidir)

1

2

3

Page 35: Making graphs in R - Sacha Epskamp · Weights matrices I The inputargument is the input. This can be a weights matrix I A weights matrix is a square n by n matrix in which each element

Arguments for directed graphs

I Two other arguments can be used this way:I curve to curve each edgeI lty to create dashed lines (not yet in matrix form)

I And finally a few other arguments:

Page 36: Making graphs in R - Sacha Epskamp · Weights matrices I The inputargument is the input. This can be a weights matrix I A weights matrix is a square n by n matrix in which each element

Arguments for directed graphs

input<-matrix(c(0,1,1,1,0,1,0,0,0),3,3,byrow=TRUE)

print(input)

## [,1] [,2] [,3]## [1,] 0 1 1## [2,] 1 0 1## [3,] 0 0 0

qgraph(input,asize=10,arrows=2,open=TRUE,curvePivot=TRUE)

1

23

Page 37: Making graphs in R - Sacha Epskamp · Weights matrices I The inputargument is the input. This can be a weights matrix I A weights matrix is a square n by n matrix in which each element

Weighted graphs

I Specify edge weights to make a graph weightedI In a weights matrix: simply specify other values than only

zeros and onesI An edge weigth of 0 indicates no connectionI Positive and negative edge weights must be comparable in

strengthI The “length” of an edge is defined as the inverse of the

weight.I Stronger connected nodes are closer togetherI An edge weight of 0 indicates infinite length

Page 38: Making graphs in R - Sacha Epskamp · Weights matrices I The inputargument is the input. This can be a weights matrix I A weights matrix is a square n by n matrix in which each element

Weighted graphs

input<-matrix(c(0,1,2,0,0,3,0,0,0),3,3,byrow=TRUE)

print(input)

## [,1] [,2] [,3]## [1,] 0 1 2## [2,] 0 0 3## [3,] 0 0 0

qgraph(input)

1

2

3

Page 39: Making graphs in R - Sacha Epskamp · Weights matrices I The inputargument is the input. This can be a weights matrix I A weights matrix is a square n by n matrix in which each element

Layout modes

I The placement of the nodes is specified with the layoutargument in qgraph()

I This can be a n by 2 matrix indicating the x and y positionof each node

I layout can also be given a character indicating one of thetwo default layouts

I If layout="circular" the nodes are placed in circlesper group (if the groups list is specified)

I If layout="spring" the Fruchterman Reingold algorithmis used for the placement

I And a final option is to specify a grid-like layout

Page 40: Making graphs in R - Sacha Epskamp · Weights matrices I The inputargument is the input. This can be a weights matrix I A weights matrix is a square n by n matrix in which each element

Layout matrix

input <- matrix(1,3,3)L <- matrix(c(

0,1,1,1,0.5,0),

ncol=2,byrow=TRUE)print(L)

## [,1] [,2]## [1,] 0.0 1## [2,] 1.0 1## [3,] 0.5 0

qgraph(input,layout=L)

1 2

3

Page 41: Making graphs in R - Sacha Epskamp · Weights matrices I The inputargument is the input. This can be a weights matrix I A weights matrix is a square n by n matrix in which each element

Layout matrix

L <- matrix(c(0,1,1,1,0,0),ncol=2,byrow=TRUE)

print(L)

## [,1] [,2]## [1,] 0 1## [2,] 1 1## [3,] 0 0

qgraph(input,layout=L)

1 2

3

Page 42: Making graphs in R - Sacha Epskamp · Weights matrices I The inputargument is the input. This can be a weights matrix I A weights matrix is a square n by n matrix in which each element

Layout matrix

I With the layout matrix the actual layout can be specifiedI The scale is not relevantI qgraph() returns a list containing everything needed to

make the graphI This can be used to force another graph based on the

layout of the first

Q <- qgraph(input)qgraph(input2,layout=Q$layout)

Page 43: Making graphs in R - Sacha Epskamp · Weights matrices I The inputargument is the input. This can be a weights matrix I A weights matrix is a square n by n matrix in which each element

Grid layout

input <- matrix(1, 3, 3)L <- matrix(c(

1,0,2,0,0,0,

0,3,0),nrow=3,byrow=TRUE)

print(L)

## [,1] [,2] [,3]## [1,] 1 0 2## [2,] 0 0 0## [3,] 0 3 0

qgraph(input,layout=L)

1 2

3

Page 44: Making graphs in R - Sacha Epskamp · Weights matrices I The inputargument is the input. This can be a weights matrix I A weights matrix is a square n by n matrix in which each element

Grid layout

input <- matrix(1,3,3)L <- matrix(c(

1,0,2,0,0,0,

3,0,0),nrow=3,byrow=TRUE)print(L)

## [,1] [,2] [,3]## [1,] 1 0 2## [2,] 0 0 0## [3,] 3 0 0

qgraph(input,layout=L)

1 2

3

Page 45: Making graphs in R - Sacha Epskamp · Weights matrices I The inputargument is the input. This can be a weights matrix I A weights matrix is a square n by n matrix in which each element

Fruchterman-Reingold layout

I layout="spring" uses a force-embedded algorithm(the Fruchterman-Reingold algorithm)

I This is an iterative algorithm.I The initial layout is a circleI Then in each iteration:

I Each node is repulsed by all other nodesI Connected nodes are also attracted to each otherI The maximum displacement weakens each iteration

I After this process the layout is rescaled to fit the −1 to 1xy -plane

I The unscaled layout is returned as layout.orig

Page 46: Making graphs in R - Sacha Epskamp · Weights matrices I The inputargument is the input. This can be a weights matrix I A weights matrix is a square n by n matrix in which each element

Big 5

Load the big 5 dataset:

data(big5)str(big5)

## num [1:500, 1:240] 2 3 4 4 5 2 2 1 4 2 ...## - attr(*, "dimnames")=List of 2## ..$ : NULL## ..$ : chr [1:240] "N1" "E2" "O3" "A4" ...

Page 47: Making graphs in R - Sacha Epskamp · Weights matrices I The inputargument is the input. This can be a weights matrix I A weights matrix is a square n by n matrix in which each element

Big 5

qgraph(cor(big5),minimum=0.25)

N1 E2 O3 A4 C5 N6 E7 O8 A9C10N11E12O13A14C15

N16E17

O18A19

C20N21

E22O23

A24C25

N26E27

O28A29

C30N31

E32O33

A34C35

N36E37

O38A39

C40

N41

E42

O43

A44

C45

N46

E47

O48

A49

C50

N51

E52

O53

A54

C55

N56

E57

O58

A59

C60

N61

E62

O63

A64

C65

N66

E67

O68

A69

C70

N71

E72

O73

A74

C75

N76

E77

O78

A79

C80

N81

E82O83

A84C85

N86E87

O88A89

C90N91

E92O93

A94C95

N96E97

O98A99

C100N101

E102O103

A104C105

N106E107

O108A109C110N111E112O113A114C115N116E117O118A119C120N121E122O123A124C125N126E127O128A129C130N131E132O133A134C135N136

E137O138

A139C140

N141E142

O143A144

C145N146

E147O148

A149C150

N151E152

O153A154

C155N156

E157O158

A159C160

N161

E162

O163

A164

C165

N166

E167

O168

A169

C170

N171

E172

O173

A174

C175

N176

E177

O178

A179

C180

N181

E182

O183

A184

C185

N186

E187

O188

A189

C190

N191

E192

O193

A194

C195

N196

E197

O198

A199

C200

N201

E202O203

A204C205

N206E207

O208A209

C210N211

E212O213

A214C215

N216E217

O218A219

C220N221

E222O223

A224C225

N226E227

O228A229C230N231E232O233A234C235N236E237O238A239C24

Page 48: Making graphs in R - Sacha Epskamp · Weights matrices I The inputargument is the input. This can be a weights matrix I A weights matrix is a square n by n matrix in which each element

The groups argument

I The groups indicates which nodes belong togetherI Nodes belonging together are...

I placed in smaller circles (with circular layout)I colored in the same color (either rainbow or defined withcolor)

I Names in the groups can be used as legendI groups can even be used to perform a oneline CFA withqgraph.cfa()

Either use a factor (a vector with characters) or a list in whicheach element is a vector containing the number of nodes thatbelong together

Page 49: Making graphs in R - Sacha Epskamp · Weights matrices I The inputargument is the input. This can be a weights matrix I A weights matrix is a square n by n matrix in which each element

The groups argument

# List:groups <- list(A = c(1,2,3,4,5),

B = c(6,7,8,9,10))# Factor:groups <- c("A","A","A","A","A",

"B","B","B","B","B")# Result:qgraph(matrix(1,10,10),groups=groups)

1

2

3

4

5

6

7

8

9

10

ABAB

Page 50: Making graphs in R - Sacha Epskamp · Weights matrices I The inputargument is the input. This can be a weights matrix I A weights matrix is a square n by n matrix in which each element

Big 5

data(big5groups)big5graph <- qgraph(cor(big5),minimum=0.25,groups=big5groups)

N1

E2

O3A4

C5

N6

E7

O8A9

C10

N11

E12

O13A14

C15

N16

E17

O18A19

C20

N21

E22

O23A24

C25

N26

E27

O28A29

C30

N31

E32

O33A34

C35

N36

E37

O38A39

C40

N41

E42

O43A44

C45

N46

E47

O48A49

C50

N51

E52

O53A54

C55

N56

E57

O58A59

C60

N61

E62

O63A64

C65

N66

E67

O68A69

C70

N71

E72

O73A74

C75

N76

E77

O78A79

C80

N81

E82

O83A84

C85

N86

E87

O88A89

C90

N91

E92

O93A94

C95

N96

E97

O98A99

C100

N101

E102

O103A104

C105

N106

E107

O108A109

C110

N111

E112

O113A114

C115

N116

E117

O118A119

C120

N121

E122

O123A124

C125

N126

E127

O128A129

C130

N131

E132

O133A134

C135

N136

E137

O138A139

C140

N141

E142

O143A144

C145

N146

E147

O148A149

C150

N151

E152

O153A154

C155

N156

E157

O158A159

C160

N161

E162

O163A164

C165

N166

E167

O168A169

C170

N171

E172

O173A174

C175

N176

E177

O178A179

C180

N181

E182

O183A184

C185

N186

E187

O188A189

C190

N191

E192

O193A194

C195

N196

E197

O198A199

C200

N201

E202

O203A204

C205

N206

E207

O208A209

C210

N211

E212

O213A214

C215

N216

E217

O218A219

C220

N221

E222

O223A224

C225

N226

E227

O228A229

C230

N231

E232

O233A234

C235

N236

E237

O238A239

C24

NeuroticismExtraversionOpennessAgreeablenessConscientiousness

NeuroticismExtraversionOpennessAgreeablenessConscientiousness

Page 51: Making graphs in R - Sacha Epskamp · Weights matrices I The inputargument is the input. This can be a weights matrix I A weights matrix is a square n by n matrix in which each element

Big 5

qgraph(big5graph,layout="spring")

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

2627

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

7677

78

79

80

81

82

83

84

85

86

87

88

89

90

9192

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116 117

118

119

120

121

122

123

124

125

126

127

128

129130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216217

218

219

220

221222

223

224

225

226

227

228

229

230

231

232

233

234

235

236

237

238

239240

NeuroticismExtraversionOpennessAgreeablenessConscientiousness

NeuroticismExtraversionOpennessAgreeablenessConscientiousness

Page 52: Making graphs in R - Sacha Epskamp · Weights matrices I The inputargument is the input. This can be a weights matrix I A weights matrix is a square n by n matrix in which each element

output

qgraph graphs can not be manually rescaled, and hence theRStudio Export function can not be used to save qgraphgraphs.

For the best result, save graphs in a PDF device!

Page 53: Making graphs in R - Sacha Epskamp · Weights matrices I The inputargument is the input. This can be a weights matrix I A weights matrix is a square n by n matrix in which each element

Export to PDF

# Open a pdf device:pdf("nameoffile.pdf")

# Plot stuff:qgraph(1)

# Close pdf device:dev.off()

## pdf## 2

(If you get faulty output, make sure to run dev.off() enoughtimes untill R returns Null Device)

Page 54: Making graphs in R - Sacha Epskamp · Weights matrices I The inputargument is the input. This can be a weights matrix I A weights matrix is a square n by n matrix in which each element

Export to PNG

# Open a pdf device:png("nameoffile.png")

# Plot stuff:qgraph(1)

# Close pdf device:dev.off()

## pdf## 2

(If you get faulty output, make sure to run dev.off() enoughtimes untill R returns Null Device)

Page 55: Making graphs in R - Sacha Epskamp · Weights matrices I The inputargument is the input. This can be a weights matrix I A weights matrix is a square n by n matrix in which each element

Important qgraph arguments

minimum Omits edge weights with absolute values underthis argument

maximum Sets the strongest edge to scale tocut Splits scaling of color and width

vsize Sets the size of nodesesize Sets the size of edgesasize Sets the size of arrows

filetype Type of file to save the plot tofilename Name of the file to save the plot to

Page 56: Making graphs in R - Sacha Epskamp · Weights matrices I The inputargument is the input. This can be a weights matrix I A weights matrix is a square n by n matrix in which each element

Contribute to qgraph

The devellopmental version of qgraph can be found on GitHub(https://github.com/SachaEpskamp/qgraph) and can beinstalled using devtools

library("devtools")install_github("qgraph","sachaepskamp")

If you have any ideas on concepts to implement in qgraph orencounter any bugs please post them on GitHub!