Description Usage Arguments Details Value Examples
View source: R/discourse_map.R
View the flow of discourse from social actors.
1 2 3 4 5 6 7 8 | discourse_map(
text.var,
grouping.var,
edge.constant,
sep = "_",
condense = TRUE,
...
)
|
text.var |
The text variable or a |
grouping.var |
The grouping variables. Also takes a single grouping variable or a list of 1 or more grouping variables. |
edge.constant |
A constant to multiple the edges by. Defaults (if
|
sep |
The separator character to use between grouping variables. |
condense |
logical. If |
... |
ignored |
For an example of the video generated from the Animate
output of discourse_map
see:
https://www.youtube.com/watch?v=7LcqFZODXNo&feature=youtu.be. An HTML
output can be viewed:
http://trinker.github.io/qdap_examples/animation_dialogue/.
Returns a list:
raw |
The dataframe with to and from columns (the edges) + word counts |
edge_word_count |
A dataframe of edges and word counts + proportional word count |
vertex_word_count |
A dataframe of vertices and word counts + proportional word count |
plot |
An igraph object |
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 26 27 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 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 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 129 130 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 | ## Not run:
discourse_map(DATA$state, list(DATA$person, DATA$sex))
x <- with(mraja1, discourse_map(dialogue, person))
x
lview(x)
library(igraph)
plot(visual(x), edge.curved=FALSE)
## Quickly add/remove a title
Title(x) <- "Act 1"
x
Title(x) <- NULL
x
## Augmenting the plot
library(qdapTools)
mygraph <- visual(x)
plot(mygraph, edge.curved=TRUE)
V(mygraph)$sex <- V(mygraph)$name %lc% raj.demographics[, 1:2]
V(mygraph)$color <- ifelse(V(mygraph)$sex=="f", "pink", "lightblue")
plot(mygraph, edge.curved=TRUE)
V(mygraph)$family <- V(mygraph)$name %l+% raj.demographics[, c(1, 3)]
cols <- qcv(blue, red, brown, darkgreen, grey10)
V(mygraph)$label.color <- lookup(V(mygraph)$family,
unique(V(mygraph)$family), cols)
plot(mygraph, edge.curved=TRUE)
## Community detection
x <- with(mraja1, discourse_map(dialogue, person))
wc <- walktrap.community(visual(x))
colors <- grDevices::rainbow(max(membership(wc)))
plot(x, vertex.color=colors[membership(wc)])
## Repeated Measures (BASIC EXAMPLE)
##------------------------------
## First merge data and map to discourse per act
## to separate networks
dat <- key_merge(raj, raj.demographics)
list_dat <- split(dat, dat$act)
plot_dat <- lapply(list_dat, function(x) with(x, discourse_map(dialogue, person)))
opar <- par()$mar
par(mfrow=c(3, 2), mar=c(0, 0, 3, 0))
lapply(seq_along(plot_dat), function(i){
plot(plot_dat[[i]])
graphics::mtext(paste("Act", names(plot_dat)[i]), side=3)
})
## Repeated Measures (EXTENDED EXAMPLE)
##------------------------------
fam_key <- data.frame(fam=unique(raj.demographics$fam.aff),
cols=qcv(blue, grey10, red, orange),
stringsAsFactors = FALSE)
par(mfrow=c(3, 2), mar=c(0, 1, 3, 1))
lapply(seq_along(plot_dat), function(i){
THE_PLOT <- visual(plot_dat[[i]])
V(THE_PLOT)$sex <- V(THE_PLOT)$name %l% raj.demographics[, 1:2]
V(THE_PLOT)$color <- ifelse(V(THE_PLOT)$sex=="f", "pink", "lightblue")
V(THE_PLOT)$family <- V(THE_PLOT)$name %lc+% raj.demographics[, c(1, 3)]
V(THE_PLOT)$label.color <- lookup(V(THE_PLOT)$family, fam_key)
plot(THE_PLOT, edge.curved=TRUE)
graphics::mtext(paste("Act", names(plot_dat)[i]), side=3)
})
frame()
bords <- rep("black", 7)
bords[3] <- "white"
legend(.29, .95, c("Female", "Male", NA, as.character(fam_key[, 1])),
fill=c("pink", "lightblue", NA, fam_key[, 2]), border=bords, cex=1.5)
## Reset graphics margins
par(mar=opar)
## ANIMATION
#===========
test <- discourse_map(DATA$state, list(DATA$person))
## Very quick, hard to see
Animate(test)
pdf("test.pdf")
par(mar=c(0, 0, 1, 0))
Animate(test, title="Test Plot")
dev.off()
## Animate it
##-----------
library(animation)
library(igraph)
loc <- folder(animation_dialogue)
ans <- Animate(test)
## Set up the plotting function
oopt <- animation::ani.options(interval = 0.1)
FUN <- function() {
lapply(seq_along(ans), function(i) {
par(mar=c(0, 0, 1, 0))
set.seed(10)
plot.igraph(ans[[i]], edge.curved=TRUE, layout=layout.circle)
graphics::mtext("Discourse Map", side=3)
animation::ani.pause()
})
}
## Detect OS
type <- if(.Platform$OS.type == "windows") shell else system
saveGIF(FUN(), interval = 0.1, outdir = loc, cmd.fun = type)
saveVideo(FUN(), video.name = "discourse_map.avi", interval = 0.1, outdir = loc)
saveLatex(FUN(), autoplay = TRUE, loop = FALSE, latex.filename = "tester.tex",
caption = "animated dialogue", outdir = loc, ani.type = "pdf",
ani.dev = "pdf", ani.width = 5, ani.height = 5.5, interval = 0.1)
saveHTML(FUN(), autoplay = FALSE, loop = TRUE, verbose = FALSE,
outdir = file.path(loc, "new"), single.opts =
"'controls': ['first', 'previous', 'play', 'next', 'last', 'loop', 'speed'], 'delayMin': 0")
## More Elaborate Layout
test2 <- with(mraja1, discourse_map(dialogue, person))
loc2 <- folder(animation_dialogue2)
ans2 <- Animate(test2)
## Set up the plotting function
oopt <- animation::ani.options(interval = 0.1)
FUN3 <- function() {
lapply(seq_along(ans2), function(i) {
par(mar=c(0, 0, 1, 0))
set.seed(10)
plot.igraph(ans2[[i]], edge.curved=TRUE, layout=layout.auto)
graphics::mtext("Discourse Map\nRomeo and Juliet: Act 1", side=3)
animation::ani.pause()
})
}
saveHTML(FUN3(), autoplay = FALSE, loop = FALSE, verbose = FALSE,
outdir = file.path(loc2, "new"), single.opts =
"'controls': ['first', 'play', 'loop', 'speed'], 'delayMin': 0")
saveVideo(FUN3(), video.name = "discourse_map.avi", interval = 0.2,
outdir = loc2)
## End(Not run)
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.