Description Usage Arguments Details Value Author(s) See Also Examples
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.
1 |
mf1 |
the first mutaframe |
var1 |
the name of the linking variable of |
mf2 |
(optional) the second mutaframe; default |
var2 |
(optional) the name of the linking variable of |
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).
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).
Yihui Xie <http://yihui.name>
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()
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.