Skip to content

ggplot2 Version of Figures in “Lattice: Multivariate Data Visualization with R” (Part 7)

July 27, 2009

This is the 7th post in a series attempting to recreate the figures in Lattice: Multivariate Data Visualization with R (R code available here) with ggplot2.

Previous parts in this series: Part 1, Part 2, Part 3, Part 4, Part 5, Part 6.


Chapter 7 – Graphical Parameters and Other Settings

Topics covered:

  • The graphical parameter system
  • Themes, devices
  • Initializing graphics devices
  • Querying and modifying parameters
  • Available parameters
  • Non-graphical options
  • Making customizations persistent

Figure 7.1

> library(lattice)
> library(ggplot2)

lattice

> pl <- dotplot(reorder(Var2, Freq) ~ Freq | Var1, data = as.data.frame.table(VADeaths),
+     origin = 0, type = c("p", "h"), main = "Death Rates in Virginia - 1940",
+     xlab = "Number of deaths per 100")
> print(pl)

ggplot2

> pg <- ggplot(as.data.frame.table(VADeaths), aes(reorder(Var2,
+     Freq), Freq)) + geom_point() + geom_linerange(aes(ymin = 0,
+     ymax = Freq)) + facet_grid(~Var1) + ylab("Number of deaths per 100") +
+     xlab("") + opts(title = "Death Rates in Virginia - 1940") +
+     coord_flip()
> print(pg)

chapter07-07_01_l_small.png chapter07-07_01_r_small.png

Figure 7.2

lattice

> dot.line.settings <- trellis.par.get("dot.line")
> dot.line.settings$col <- "transparent"
> trellis.par.set("dot.line", dot.line.settings)
> plot.line.settings <- trellis.par.get("plot.line")
> plot.line.settings$lwd <- 2
> trellis.par.set("plot.line", plot.line.settings)
> print(trellis.last.object())

ggplot2

> pg <- pg + geom_linerange(aes(ymin = 0, ymax = Freq),
+     size = 1.5) + opts(panel.grid.major = theme_blank(),
+     panel.grid.minor = theme_blank())
> print(pg)

chapter07-07_02_l_small.png chapter07-07_02_r_small.png

Figure 7.3

> tp <- trellis.par.get()
> unusual <- c("grid.pars", "fontsize", "clip", "axis.components",
+     "layout.heights", "layout.widths")
> for (u in unusual) tp[[u]] <- NULL
> names.tp <- lapply(tp, names)
> unames <- sort(unique(unlist(names.tp)))
> ans <- matrix(0, nrow = length(names.tp), ncol = length(unames))
> rownames(ans) <- names(names.tp)
> colnames(ans) <- unames
> for (i in seq(along = names.tp)) ans[i, ] <- as.numeric(unames %in%
+     names.tp[[i]])
> ans <- ans[, order(-colSums(ans))]
> ans <- ans[order(rowSums(ans)), ]
> ans[ans == 0] <- NA

lattice

> pl <- levelplot(t(ans), colorkey = FALSE, scales = list(x = list(rot = 90)),
+     panel = function(x, y, z, ...) {
+         panel.abline(v = unique(as.numeric(x)), h = unique(as.numeric(y)),
+             col = "darkgrey")
+         panel.xyplot(x, y, pch = 16 * z, ...)
+     }, xlab = "Graphical parameters", ylab = "Setting names")
> print(pl)

ggplot2

> pg <- ggplot(subset(as.data.frame.table(ans), Freq ==
+     1), aes(Var2, Var1)) + geom_point() + xlab("Graphical parameters") +
+     ylab("Setting names") + opts(axis.text.x = theme_text(angle = 90,
+     hjust = 1, colour = "grey50"))
> print(pg)

chapter07-07_03_l_small.png chapter07-07_03_r_small.png

Figure 7.4

lattice

> show.settings()

ggplot2

The same not possible in ggplot2.

chapter07-07_04_l_small.png

No comments yet

Leave a comment