Plot an ENA network: nodes and edges
Usage
ena.plot.network(
enaplot = NULL,
network = NULL,
node.positions = enaplot$enaset$rotation$nodes,
adjacency.key = NULL,
colors = c(pos = enaplot$palette[1], enaplot$palette[2]),
edge_type = "line",
show.all.nodes = T,
threshold = c(0),
thin.lines.in.front = T,
layers = c("nodes", "edges"),
thickness = c(min(abs(network)), max(abs(network))),
opacity = thickness,
saturation = thickness,
scale.range = c(ifelse(min(network) == 0, 0, 0.1), 1),
node.size = c(3, 10),
labels = NULL,
label.offset = "middle right",
label.font.size = enaplot$get("font.size"),
label.font.color = enaplot$get("font.color"),
label.font.family = enaplot$get("font.family"),
legend.name = NULL,
legend.include.edges = F,
scale.weights = F,
...
)Arguments
- enaplot
ENAplotobject to use for plotting- network
dataframe or matrix containing the edge weights for the network graph; typically comes from ENAset$line.weights
- node.positions
matrix containing the positiions of the nodes. Defaults to enaplot$enaset$node.positions
- adjacency.key
matrix containing the adjacency key for looking up the names and positions
- colors
A String or vector of colors for positive and negative line weights. E.g. red or c(pos= red, neg = blue), default: c(pos= red, neg = blue)
- edge_type
A String representing the type of line to draw, either "line", "dash", or "dot"
- show.all.nodes
A Logical variable, default: true
- threshold
A vector of numeric min/max values, default: c(0,Inf) plotting . Edge weights below the min value will not be displayed; edge weights above the max value will be shown at the max value.
- thin.lines.in.front
A logical, default: true
- layers
ordering of layers, default: c("nodes", "edges")
- thickness
A vector of numeric min/max values for thickness, default: c(min(abs(network)), max(abs(network)))
- opacity
A vector of numeric min/max values for opacity, default: thickness
- saturation
A vector of numeric min/max values for saturation, default: thickness
- scale.range
A vector of numeric min/max to scale from, default: c(0.1,1) or if min(network) is 0, c(0,1)
- node.size
A lower and upper bound used for scaling the size of the nodes, default c(0, 20)
- labels
A character vector of node labels, default: code names
- label.offset
A character vector of representing the positional offset relative to the respective node. Defaults to "middle right" for all nodes. If a single values is provided, it is used for all positions, else the length of the
- label.font.size
An integer which determines the font size for graph labels, default: enaplot$font.size
- label.font.color
A character which determines the color of label font, default: enaplot$font.color
- label.font.family
A character which determines font type, choices: Arial, Courier New, Times New Roman, default: enaplot$font.family
- legend.name
A character name used in the plot legend. Not included in legend when NULL (Default), if legend.include.edges is TRUE will always be "Nodes"
- legend.include.edges
Logical value indicating if the edge names should be included in the plot legend. Forces legend.name to be "Nodes"
- scale.weights
Logical indicating to scale the supplied network
- ...
Additional parameters
Value
The ENAplot provided to the function, with its plot updated to include the nodes and provided connecting lines.
Details
lots a network graph, including nodes (taken from codes in the ENAplot) and the edges (provided in network)
Examples
data(RS.data)
codeNames = c('Data','Technical.Constraints','Performance.Parameters',
'Client.and.Consultant.Requests','Design.Reasoning','Collaboration');
accum = ena.accumulate.data(
units = RS.data[,c("UserName","Condition")],
conversation = RS.data[,c("Condition","GroupName")],
metadata = RS.data[,c("CONFIDENCE.Change","CONFIDENCE.Pre","CONFIDENCE.Post")],
codes = RS.data[,codeNames],
window.size.back = 4
)
set = ena.make.set(
enadata = accum,
rotation.by = ena.rotate.by.mean,
rotation.params = list(
accum$meta.data$Condition=="FirstGame",
accum$meta.data$Condition=="SecondGame"
)
)
plot = ena.plot(set)
### Subset rotated points and plot Condition 1 Group Mean
as.matrix(set$points$Condition$FirstGame)
#> MR1 SVD2 SVD3 SVD4 SVD5
#> [1,] -0.056054354 -0.008605342 -0.002057220 0.017117506 -0.0203390545
#> [2,] -0.086342146 0.001037475 0.041189098 0.009581292 0.0218257846
#> [3,] -0.287738174 -0.174169929 -0.041421698 0.056217164 0.0239272758
#> [4,] 0.024420908 -0.103194928 0.096641376 -0.012314776 -0.0006745635
#> [5,] -0.188438766 0.056262827 -0.047768406 0.383830896 -0.0363806633
#> [6,] -0.126092030 -0.130759463 -0.212558839 -0.125681709 0.0512785901
#> [7,] -0.289888189 -0.002927022 0.140070754 0.151983997 0.0313885290
#> [8,] -0.095113420 -0.171095254 0.116333000 -0.029705018 -0.0307697997
#> [9,] -0.078778008 -0.241402399 -0.086243251 0.073103528 -0.1104595345
#> [10,] -0.031637314 -0.080885967 -0.022172479 -0.090013939 -0.0052698757
#> [11,] -0.005792158 0.255963362 0.064764006 -0.096544323 -0.0340864744
#> [12,] -0.033157252 -0.004428193 -0.060324536 0.020110024 -0.0076613570
#> [13,] -0.045707804 -0.045938053 0.019112460 -0.032890108 0.0877277105
#> [14,] -0.210835345 -0.146089807 0.065982843 -0.023150102 -0.0748037814
#> [15,] -0.023089038 -0.129914011 0.115071931 0.027063686 -0.0011689788
#> [16,] -0.131481029 0.119449677 0.081580689 -0.056070583 -0.0983348835
#> [17,] -0.152712520 0.020832482 0.021940497 -0.074535892 -0.0597139160
#> [18,] -0.071251835 0.215270364 0.130413272 -0.065057713 -0.1040979421
#> [19,] 0.021839319 0.114224081 0.152473241 -0.026299413 -0.0583263509
#> [20,] -0.309228076 0.130713802 -0.067751916 0.049044923 0.1491375818
#> [21,] -0.100523852 0.232730878 -0.177822012 -0.011542405 0.1147132802
#> [22,] 0.009957384 0.061352461 0.012788398 -0.024841008 -0.0452206489
#> [23,] -0.093626205 -0.014042897 -0.077724151 0.042322679 0.1010558289
#> [24,] 0.225153276 -0.021650931 0.015335147 -0.053937243 0.0992517693
#> [25,] -0.057735437 -0.025849362 -0.286110111 -0.102257318 -0.0590119060
#> [26,] -0.111499312 0.093116147 0.008257909 -0.005534144 0.0660133800
#> SVD6 SVD7 SVD8 SVD9 SVD10
#> [1,] 0.026473339 -0.01418133 0.0446203078 0.004158459 -0.001599785
#> [2,] 0.016909015 0.01903734 0.0219230429 0.021131058 -0.005993553
#> [3,] 0.024446792 0.07086400 -0.0865961044 0.058080615 -0.078922007
#> [4,] 0.032983949 0.01382008 0.0429484829 0.014347079 -0.037697169
#> [5,] 0.066514754 0.02374807 -0.0335953997 -0.028085061 0.038439286
#> [6,] 0.032647410 -0.03627855 0.0560217550 -0.010315327 0.037461894
#> [7,] 0.057386995 -0.05371739 -0.0348714352 0.024212619 0.072028391
#> [8,] 0.019414590 -0.04165053 -0.0535319360 0.031313127 0.059308351
#> [9,] -0.054200971 -0.02120410 -0.0189808899 -0.034506525 0.012688944
#> [10,] 0.073912309 0.01852309 -0.0220682097 0.015731392 -0.021506544
#> [11,] 0.031886360 -0.06743132 -0.1461054941 -0.029742948 -0.010559781
#> [12,] 0.076018187 -0.05614734 0.0470371016 -0.055985261 -0.029970908
#> [13,] -0.056488056 0.04311472 -0.0143950164 -0.092245667 -0.003529600
#> [14,] 0.001713129 -0.03943270 -0.0120372523 0.078821541 -0.022180980
#> [15,] 0.002358982 -0.03724749 0.0603176369 -0.025647167 -0.012739354
#> [16,] -0.037336256 0.02370408 0.0171656240 -0.001480756 -0.001092940
#> [17,] -0.014694599 0.02529245 -0.0077706756 0.040244764 0.008351668
#> [18,] 0.036408749 0.05216560 0.0596062852 -0.007566808 0.010002211
#> [19,] -0.102146290 0.05399016 0.0277466193 0.021041801 0.022146577
#> [20,] 0.091463229 0.04959516 0.0287856791 -0.002448404 -0.016340298
#> [21,] -0.085731460 0.03300727 -0.0029974743 0.007837150 0.049008784
#> [22,] -0.059318827 0.02550921 -0.0061038551 -0.050688122 -0.017338949
#> [23,] -0.078379200 -0.04130277 0.0047171079 -0.045545964 -0.028277576
#> [24,] -0.056151015 -0.02536253 0.0044716553 -0.022229562 0.029548696
#> [25,] -0.048481636 -0.04540053 0.0006631165 0.068592962 0.007967886
#> [26,] 0.002390519 0.02698535 0.0230293282 0.020975007 -0.059203242
#> SVD11 SVD12 SVD13 SVD14 SVD15
#> [1,] -0.0333050931 0.0165531102 -0.028407376 -0.0207585395 0.0053940834
#> [2,] -0.0170799780 0.0021253735 0.003675627 -0.0384961876 -0.0192281844
#> [3,] -0.0030538098 0.0248114175 0.012251274 0.0119520417 -0.0005867374
#> [4,] 0.0019388083 -0.0081469163 0.003851633 -0.0177917107 -0.0339347502
#> [5,] 0.0197731980 -0.0247574647 0.035928355 0.0197203401 -0.0077399055
#> [6,] -0.0106412043 -0.0088460398 0.029994762 0.0360981220 0.0072604839
#> [7,] 0.0220803566 0.0079019261 -0.045897460 0.0008759494 -0.0034387254
#> [8,] 0.0026321959 -0.0154785444 0.004122053 -0.0237043329 0.0175786585
#> [9,] -0.0032025067 0.0389154118 -0.028690731 0.0097518202 -0.0023686922
#> [10,] 0.0125678074 -0.0109990771 -0.034430729 -0.0296371494 0.0050268196
#> [11,] -0.0467796141 0.0049980959 0.018937747 0.0018080087 -0.0160082236
#> [12,] 0.0117279808 0.0003613296 -0.010760152 -0.0025512634 0.0146651267
#> [13,] 0.0242405859 -0.0063406600 0.011004721 -0.0251377255 0.0076106903
#> [14,] -0.0029113676 -0.0158476350 0.008696809 0.0274733083 0.0294934257
#> [15,] 0.0208804789 -0.0159003367 0.010401085 0.0061143636 0.0007946175
#> [16,] 0.0156366006 0.0181741955 -0.018578534 0.0050545803 0.0095301942
#> [17,] 0.0181960061 -0.0167989228 0.013095506 -0.0242238520 -0.0070807421
#> [18,] 0.0329114271 0.0200175050 0.002407689 0.0188802015 -0.0167367876
#> [19,] -0.0101168118 -0.0001986431 0.015411400 -0.0013401098 0.0013820590
#> [20,] -0.0325956909 0.0416778436 0.017225157 0.0413605789 0.0149241355
#> [21,] -0.0029084046 -0.0264566957 -0.008872722 0.0136909042 0.0057384467
#> [22,] 0.0001017664 -0.0003453221 0.017570113 -0.0197139186 0.0122833820
#> [23,] -0.0092083091 -0.0002797472 0.007524841 -0.0115362527 -0.0230667521
#> [24,] -0.0033734638 -0.0449990245 -0.022922844 0.0112421701 0.0189097280
#> [25,] 0.0067597533 -0.0160706174 0.004087811 0.0192295118 -0.0382657612
#> [26,] -0.0142707117 0.0359294379 -0.017626035 -0.0083608588 0.0178634108
first.game.points = as.matrix(set$points$Condition$FirstGame)
plot = ena.plot.group(plot, first.game.points, labels = "FirstGame",
colors = "red", confidence.interval = "box")
### Subset rotated points and plot Condition 2 Group Mean
second.game.points = as.matrix(set$points$Condition$SecondGame)
plot = ena.plot.group(plot, second.game.points, labels = "SecondGame",
colors = "blue", confidence.interval = "box")
### get mean network plots
first.game.lineweights = as.matrix(set$line.weights$Condition$FirstGame)
first.game.mean = colMeans(first.game.lineweights)
second.game.lineweights = as.matrix(set$line.weights$Condition$SecondGame)
second.game.mean = colMeans(second.game.lineweights)
subtracted.network = first.game.mean - second.game.mean
plot = ena.plot.network(plot, network = subtracted.network)
print(plot)
