Learn R Programming

qdap (version 2.3.0)

trans_cloud: Word Clouds by Grouping Variable

Description

Produces word clouds with optional theme coloring by grouping variable.

Usage

trans_cloud(text.var = NULL, grouping.var = NULL, word.list = NULL,
  stem = FALSE, target.words = NULL, expand.target = TRUE,
  target.exclude = NULL, stopwords = NULL, min.freq = 1, caps = TRUE,
  caps.list = NULL, random.order = FALSE, rot.per = 0,
  cloud.colors = NULL, title = TRUE, cloud.font = NULL,
  title.font = NULL, title.color = "black", title.padj = -4.5,
  title.location = 3, title.cex = NULL, title.names = NULL,
  proportional = FALSE, max.word.size = NULL, min.word.size = 0.5,
  legend = NULL, legend.cex = 0.8, legend.location = c(-0.03, 1.03),
  char.keep = "~~", char2space = "~~")

Arguments

text.var

The text variable.

grouping.var

The grouping variables. Default NULL generates one word list for all text. Also takes a single grouping variable or a list of 1 or more grouping variables.

word.list

A frequency word list passed from word_list.

stem

logical. If TRUE the text.var will be stemmed.

target.words

A named list of vectors of words whose length corresponds to cloud.colors (+1 length in cloud colors for non-matched terms).

expand.target

logical. If TRUE agrep will be used to expand the target.words.

target.exclude

A vector of words to exclude from the target.words.

stopwords

Words to exclude from the cloud.

min.freq

An integer value indicating the minimum frequency a word must appear to be included.

caps

logical. If TRUE selected words will be capitalized.

caps.list

A vector of words to capitalize (caps must be TRUE).

random.order

Plot words in random order. If false, they will be plotted in decreasing frequency.

rot.per

Proportion words with 90 degree rotation.

cloud.colors

A vector of colors equal to the length of target words +1.

title

logical. If TRUE adds a title corresponding to the grouping.var.

cloud.font

The font family of the cloud text.

title.font

The font family of the cloud title.

title.color

A character vector of length one corresponding to the color of the title.

title.padj

Adjustment for the title. For strings parallel to the axes, padj = 0 means right or top alignment, and padj = 1 means left or bottom alignment.

title.location

On which side of the plot (1=bottom, 2=left, 3=top, 4=right).

title.cex

Character expansion factor for the title. NULL and NA are equivalent to 1.0.

title.names

Optional vector of title names equal in length to the grouping.var that will override the default use of the grouping.var names.

proportional

logical. If TRUE scales the word clouds across grouping.var to allow cloud to cloud comparisons.

max.word.size

A size argument to control the minimum size of the words.

min.word.size

A size argument to control the maximum size of the words.

legend

A character vector of names corresponding to the number of vectors in target.words.

legend.cex

Character expansion factor for the legend. NULL and NA are equivalent to 1.0.

legend.location

The x and y co-ordinates to be used to position the legend.

char.keep

A character vector of symbol character (i.e., punctuation) that strip should keep. The default is to strip everything except apostrophes. This enables the use of special characters to be turned into spaces or for characters to be retained.

char2space

A vector of characters to be turned into spaces. If char.keep is NULL, char2space will activate this argument.

Value

Returns a series of word cloud plots with target words (themes) colored.

See Also

wordcloud, gradient_cloud

Examples

Run this code
# NOT RUN {
terms <- list(
    I=c("i", "i'm"),
    mal=qcv(stinks, dumb, distrust),
    articles=qcv(the, a, an),
    pronoun=qcv(we, you)
)

with(DATA, trans_cloud(state, person, target.words=terms, 
    cloud.colors=qcv(red, green, blue, black, gray65), 
    expand.target=FALSE, proportional=TRUE, legend=c(names(terms), 
    "other")))

with(DATA, trans_cloud(state, person, target.words=terms,
    stopwords=exclude(with(DATA, unique(bag_o_words(state))), 
        unique(unlist(terms))), 
    cloud.colors=qcv(red, green, blue, black, gray65), 
    expand.target=FALSE, proportional=TRUE, legend=names(terms)))
    
    
#color the negated phrases opposite:
DATA <- qdap::DATA
DATA[1, 4] <- "This is not good!"
DATA[8, 4] <- "I don't distrust you."

DATA$state <- space_fill(DATA$state, paste0(negation.words, " "), 
    rm.extra = FALSE)

txt <- gsub("~~", " ", breaker(DATA$state))
rev.neg <- sapply(negation.words, paste, negative.words)
rev.pos <- sapply(negation.words, paste, positive.words)


tw <- list(
    positive=c(positive.words, rev.neg[rev.neg %in% txt]), 
    negative=c(negative.words, rev.pos[rev.pos %in% txt])
)


with(DATA, trans_cloud(state, person,
    target.words=tw,
    cloud.colors=qcv(darkgreen, red, gray65),
    expand.target=FALSE, proportional=TRUE, legend=names(tw)))

DATA <- qdap::DATA  ## Reset DATA
# }

Run the code above in your browser using DataLab