link_cat: Categorical linking

Description Usage Arguments Details Value Author(s) See Also Examples

View source: R/link.R

Description

This function links two mutaframes together (or one mutaframe to itself) by a common categorical variable so that whenever one element (or multiple elements) in a category (or multiple categories) is brushed, all elements in this (these) categories will be brushed.

Usage

1
link_cat(mf1, var1, mf2 = NULL, var2 = NULL)

Arguments

mf1

the first mutaframe

var1

the name of the linking variable of mf1

mf2

(optional) the second mutaframe; default NULL means mf1 will be linked to itself

var2

(optional) the name of the linking variable of mf2

Details

Categorical linking is achieved by a series of logical operations: first, look for which rows are brushed in the first mutaframe, and find out the values of its linking variable as well as the categories they belong to, then look for which elements of the linking variable in the second mutaframe (possibly the same mutaframe) are in these categories, and brush these elements (corresponding to rows).

The implementation is through listeners on mutaframes from the plumbr package. It may be important keep track of the id's of listeners to avoid unnecessary burden of updating data objects in a linking chain. Listeners can be detached from mutaframes by remove_link (see examples below).

Value

The mutaframes will be linked together by their linking variables (listeners are added to mutaframes), and the id's of the listeners attached on each mutaframe will be returned as a vector (first element for the first mutaframe; second element for the second one).

Author(s)

Yihui Xie <http://yihui.name>

See Also

qdata

Examples

 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
library(cranvas)

### (1) linking to between two tables, using common id variable

qwg <- qdata(wages.demog)
# qscatter(ged, race, data=qwg)
qbar(race, data = qwg)
qbar(ged, data = qwg)
qhist(hgc, data = qwg)

qwages <- qdata(wages)
qscatter(exper, lnw, data = qwages, alpha = 0.5)

id <- link_cat(qwages, var1 = "id", qwg, var2 = "id")

remove_link(qwages, id[1])
remove_link(qwg, id[2])

### (1.5) linking between two datasets, using several id variables
id <- link_cat(qwages, var1 = c("black", "hispanic"), qwg, var2 = c("black", "hispanic"))

qscatter(exper, lnw, data = qwages, alpha = 0.5)
qbar(black, data = qwg)
qbar(hispanic, data = qwg)

remove_link(qwages, id[1])
remove_link(qwg, id[2])

### (2) linking to oneself through a categorical variable
data(flea, package = "tourr")

qflea <- qdata(flea, color = species)
qhist(tars1, data = qflea)  # an ordinary histogram; try brushing

## now we link qflea to itself by species
id <- link_cat(qflea, "species")
## brush the plot and see what happens

remove_link(qflea, id)  # remove this linking; back to normal linking again

### (2.5) link to oneself by several categorical variables
idmulti <- link_cat(qwages, c("ged", "black", "hispanic"))

qscatter(exper, lnw, data = qwages, alpha = 0.5)

remove_link(qwages, idmulti)

### (3) link the original data with a frequency table
tab2 <- as.data.frame(table(flea$species))
colnames(tab2) <- c("type", "freq")
(qflea2 <- qdata(tab2))
head(qflea)  # what the two datasets look like

## see how two different datasets can be linked through a common categorical
## variable
id <- link_cat(qflea, var1 = "species", qflea2, var2 = "type")
qhist(tars1, data = qflea)
qbar(type, data = qflea2, standardize = TRUE)

## remove the linking on two datasets respectively
remove_link(qflea, id[1])
remove_link(qflea2, id[2])

cranvas_off()

ggobi/cranvas documentation built on May 17, 2019, 3:10 a.m.