## ----setup, include=FALSE-----------------------------------------------------
knitr::opts_chunk$set(
    echo = TRUE, 
    tidy.opts = list(width.cutoff = 65),
    tidy = TRUE)

set.seed(12314159)

imageDirectory <- file.path(".", "images", "intro")
# dataDirectory <- file.path(".", "data", "intro")

## ----library_loon, eval = TRUE, echo = TRUE, fig.align="center", fig.width = 6, fig.height = 4, out.width = "75%", warning=FALSE, message=FALSE----
library(loon)

## ----first loon plot, eval = FALSE, echo = TRUE, fig.align="center", fig.width = 6, fig.height = 5, out.width = "75%", warning=FALSE, message=FALSE, tidy=FALSE----
# l_plot(x = quakes$long,
#        y = quakes$lat,
#        xlabel = "longitude",
#        ylabel = "latitude",
#        title = "Tonga trench earthquakes")

## ----OUT first loon plot, eval = FALSE, echo = TRUE, fig.align="center", fig.width = 6, fig.height = 5, out.width = "75%", warning=FALSE, message=FALSE, tidy=FALSE----
# [1] ".l0.plot"
# attr(,"class")
# [1] "l_plot" "loon"

## ----loonQuakeOriginal, out.width= "60%", fig.align="center", echo=FALSE------
knitr::include_graphics(file.path(imageDirectory, "quakesOriginal.png"))

## ----looninspectorQuakeOriginal, out.width= "30%", fig.align="center", echo=FALSE----
knitr::include_graphics(file.path(imageDirectory, "inspectorQuakesOriginal.png"))

## ----panning, out.width= "40%", fig.align="center", echo=FALSE----------------
knitr::include_graphics(file.path(imageDirectory, "panning.png"))

## ----zooming, out.width= "40%", fig.align="center", echo=FALSE----------------
knitr::include_graphics(file.path(imageDirectory, "zooming.png"))

## ----point selection, out.width= "40%", fig.align="center", echo=FALSE--------
knitr::include_graphics(file.path(imageDirectory, "selecting.png"))

## ----select defaults, out.width= "40%", fig.align="left", echo=FALSE----------
knitr::include_graphics(file.path(imageDirectory, "inspectorSelectDefaults.png"))

## ----looninspector plus 10 cols, out.width= "30%", fig.align="center", echo=FALSE----
knitr::include_graphics(file.path(imageDirectory, "inspectorQuakesPlus10Cols.png"))

## ----l_getColorList, eval = FALSE, tidy = TRUE--------------------------------
# head(l_getColorList())

## ----grDevices palette, eval = FALSE, tidy =TRUE------------------------------
# head(palette())

## ----changing the inspector palette, eval = FALSE-----------------------------
# l_setColorList_baseR()                             # base R palette
# l_setColorList_ColorBrewer("Set2")                 # colorblind friendly choice from ColorBrewer
# l_setColorList_hcl(luminance = 80)                 # set of hcl colours
# l_setColorList_ggplot2()                           # ggplot2's palette
# l_setColorList_loon()                              # default loon palette
# l_setColorList(l_colRemoveAlpha(rainbow(5)))       # any set of colours without alpha

## ----assign loon plot, eval = FALSE, echo = TRUE, fig.align="center", fig.width = 5, fig.height = 5, out.width = "75%", warning=FALSE, message=FALSE, tidy = FALSE----
# # loon graphics (note that the result is assigned to p)
# p <- l_plot(x = quakes$long, y = quakes$lat,
#             xlabel = "longitude", ylabel = "latitude",
#             title = "Tonga trench earthquakes")

## ----create handle for loon plot, eval = FALSE, echo = TRUE, fig.align="center", fig.width = 5, fig.height = 5, out.width = "75%", warning=FALSE, message=FALSE, tidy = FALSE----
# # accessing the plot from its string representation
# p <- l_create_handle(".l0.plot")

## ----printed representation loon plot, eval = FALSE, echo = TRUE, fig.align="center", fig.width = 5, fig.height = 5, out.width = "75%", warning=FALSE, message=FALSE, tidy = FALSE----
# p

## ----OUT printed representation loon plot, eval = FALSE, echo = TRUE, fig.align="center", fig.width = 5, fig.height = 5, out.width = "75%", warning=FALSE, message=FALSE, tidy = FALSE----
# [1] ".l0.plot"
# attr(,"class")
# [1] "l_plot" "loon"

## ----plot of loon plot, eval = FALSE, echo = TRUE, fig.align="center", fig.width = 5, fig.height = 5, out.width = "50%", warning=FALSE, message=FALSE, tidy = FALSE----
# plot(p)

## ----names, eval = FALSE, echo = TRUE, fig.align="center", fig.width = 5, fig.height = 5, out.width = "75%", warning=FALSE, message=FALSE, tidy = TRUE----
# head(names(p))

## ----showGuides, eval = FALSE, echo = TRUE, fig.align="center", fig.width = 5, fig.height = 5, out.width = "75%", warning=FALSE, message=FALSE, tidy = TRUE----
# p["showGuides"]

## ----set up group cols, eval = FALSE, echo = FALSE----------------------------
# cols_saved <- c("red", "red", "orange", "red", "red", "orange",
# "black", "orange", "orange", "red", "red", "black",
# "red", "red", "black", "orange", "black", "red",
# "red", "red", "red", "black", "red", "orange",
# "red", "red", "black", "red", "red", "red",
# "red", "black", "orange", "red", "orange", "red",
# "black", "red", "red", "black", "orange", "orange",
# "red", "orange", "black", "orange", "orange", "black",
# "red", "orange", "red", "orange", "black", "red",
# "red", "red", "red", "red", "red", "red",
# "red", "red", "steelblue", "black", "red", "orange",
# "red", "red", "red", "orange", "orange", "orange",
# "black", "red", "red", "red", "orange", "black",
# "red", "orange", "orange", "red", "red", "orange",
# "red", "orange", "black", "red", "orange", "orange",
# "black", "black", "red", "black", "orange", "red",
# "orange", "red", "black", "red", "orange", "red",
# "red", "orange", "red", "orange", "orange", "black",
# "orange", "orange", "orange", "red", "red", "red",
# "red", "red", "steelblue", "steelblue", "black", "black",
# "black", "red", "red", "red", "orange", "black",
# "orange", "red", "orange", "orange", "orange", "red",
# "black", "red", "red", "black", "orange", "orange",
# "orange", "orange", "steelblue", "red", "black", "orange",
# "steelblue", "orange", "orange", "black", "red", "red",
# "orange", "black", "orange", "black", "black", "red",
# "black", "red", "black", "black", "red", "red",
# "black", "orange", "orange", "orange", "orange", "orange",
# "red", "black", "red", "red", "red", "red",
# "red", "orange", "red", "orange", "red", "red",
# "red", "orange", "orange", "red", "red", "orange",
# "red", "red", "red", "orange", "orange", "black",
# "red", "red", "orange", "red", "orange", "orange",
# "red", "red", "red", "red", "red", "orange",
# "steelblue", "red", "red", "red", "orange", "red",
# "orange", "red", "orange", "orange", "red", "red",
# "orange", "red", "orange", "red", "orange", "black",
# "orange", "red", "red", "black", "orange", "orange",
# "orange", "black", "red", "red", "red", "orange",
# "red", "red", "orange", "red", "black", "red",
# "red", "orange", "black", "red", "orange", "red",
# "red", "orange", "red", "black", "black", "black",
# "red", "black", "orange", "red", "orange", "black",
# "red", "red", "orange", "red", "black", "red",
# "red", "orange", "black", "black", "red", "red",
# "red", "red", "red", "red", "red", "red",
# "red", "red", "red", "red", "orange", "red",
# "black", "orange", "orange", "red", "red", "orange",
# "red", "red", "red", "black", "red", "red",
# "orange", "orange", "red", "red", "orange", "black",
# "steelblue", "orange", "orange", "red", "steelblue", "red",
# "red", "red", "red", "orange", "steelblue", "steelblue",
# "red", "red", "orange", "red", "red", "black",
# "red", "black", "black", "orange", "red", "orange",
# "black", "orange", "red", "black", "orange", "black",
# "orange", "red", "orange", "black", "red", "orange",
# "orange", "orange", "orange", "orange", "orange", "orange",
# "orange", "orange", "orange", "orange", "orange", "orange",
# "orange", "orange", "orange", "black", "red", "orange",
# "orange", "red", "black", "red", "orange", "black",
# "red", "orange", "red", "orange", "black", "orange",
# "red", "red", "red", "orange", "red", "orange",
# "red", "red", "orange", "orange", "red", "orange",
# "orange", "orange", "black", "black", "orange", "black",
# "red", "orange", "red", "orange", "black", "orange",
# "orange", "orange", "red", "red", "red", "red",
# "red", "orange", "red", "steelblue", "orange", "black",
# "orange", "red", "red", "red", "red", "black",
# "red", "orange", "orange", "orange", "black", "red",
# "orange", "black", "black", "orange", "orange", "orange",
# "red", "orange", "orange", "red", "orange", "orange",
# "red", "red", "black", "red", "red", "red",
# "red", "red", "orange", "orange", "black", "red",
# "red", "orange", "black", "orange", "black", "red",
# "orange", "orange", "orange", "red", "red", "red",
# "orange", "red", "black", "orange", "orange", "black",
# "red", "orange", "red", "red", "orange", "red",
# "red", "red", "orange", "red", "black", "orange",
# "red", "orange", "orange", "orange", "orange", "black",
# "orange", "orange", "orange", "orange", "red", "orange",
# "red", "red", "orange", "orange", "red", "orange",
# "orange", "red", "red", "steelblue", "orange", "black",
# "red", "red", "orange", "black", "orange", "orange",
# "red", "orange", "orange", "orange", "orange", "black",
# "red", "red", "black", "black", "black", "red",
# "orange", "orange", "orange", "red", "red", "orange",
# "black", "orange", "orange", "red", "orange", "red",
# "orange", "black", "orange", "red", "black", "black",
# "red", "orange", "black", "black", "orange", "black",
# "orange", "black", "red", "black", "black", "red",
# "black", "black", "black", "black", "black", "black",
# "black", "red", "orange", "red", "red", "black",
# "black", "orange", "orange", "orange", "orange", "orange",
# "red", "black", "red", "orange", "orange", "orange",
# "red", "orange", "orange", "red", "orange", "orange",
# "black", "orange", "red", "orange", "red", "orange",
# "red", "red", "red", "orange", "black", "red",
# "black", "red", "red", "orange", "black", "red",
# "red", "red", "red", "red", "black", "black",
# "orange", "black", "black", "red", "orange", "orange",
# "orange", "orange", "red", "red", "black", "orange",
# "orange", "orange", "red", "orange", "orange", "black",
# "black", "red", "orange", "red", "orange", "black",
# "red", "black", "orange", "orange", "red", "red",
# "black", "red", "orange", "red", "black", "red",
# "red", "orange", "orange", "red", "orange", "red",
# "orange", "black", "orange", "red", "red", "black",
# "orange", "orange", "red", "orange", "orange", "orange",
# "orange", "red", "red", "red", "black", "red",
# "steelblue", "black", "red", "orange", "red", "red",
# "orange", "red", "red", "red", "red", "red",
# "red", "red", "red", "orange", "red", "black",
# "red", "red", "black", "orange", "orange", "red",
# "red", "red", "black", "orange", "orange", "red",
# "orange", "black", "red", "red", "red", "red",
# "red", "red", "red", "red", "red", "red",
# "red", "orange", "black", "red", "black", "black",
# "red", "red", "orange", "orange", "red", "orange",
# "orange", "red", "orange", "black", "orange", "black",
# "red", "steelblue", "red", "orange", "orange", "red",
# "black", "red", "red", "red", "black", "black",
# "red", "red", "red", "red", "red", "orange",
# "orange", "red", "black", "orange", "orange", "red",
# "red", "orange", "red", "orange", "orange", "orange",
# "red", "orange", "orange", "orange", "red", "red",
# "red", "orange", "red", "black", "red", "black",
# "orange", "orange", "black", "orange", "orange", "red",
# "orange", "orange", "black", "black", "orange", "orange",
# "black", "orange", "orange", "red", "orange", "red",
# "red", "red", "orange", "red", "black", "red",
# "black", "black", "orange", "orange", "red", "orange",
# "black", "red", "orange", "red", "red", "red",
# "red", "orange", "red", "orange", "black", "red",
# "orange", "red", "orange", "red", "orange", "steelblue",
# "red", "orange", "red", "red", "red", "red",
# "red", "orange", "black", "orange", "red", "red",
# "orange", "orange", "red", "red", "red", "orange",
# "red", "red", "black", "red", "black", "orange",
# "orange", "orange", "orange", "orange", "orange", "red",
# "red", "orange", "black", "red", "orange", "black",
# "red", "orange", "orange", "black", "red", "red",
# "red", "red", "red", "red", "orange", "black",
# "black", "orange", "red", "orange", "steelblue", "orange",
# "orange", "black", "red", "red", "red", "red",
# "black", "black", "red", "orange", "black", "black",
# "red", "black", "black", "red", "red", "red",
# "red", "red", "red", "red", "orange", "red",
# "black", "black", "orange", "red", "black", "black",
# "orange", "orange", "black", "red", "black", "orange",
# "red", "red", "orange", "red", "orange", "red",
# "orange", "orange", "orange", "red", "red", "red",
# "red", "black", "black", "orange", "red", "black",
# "orange", "red", "black", "black", "orange", "orange",
# "orange", "red", "black", "orange", "red", "red",
# "orange", "red", "black", "orange", "orange", "black",
# "orange", "red", "red", "orange", "orange", "orange",
# "red", "orange", "red", "red", "red", "orange",
# "red", "orange", "orange", "orange", "red", "orange",
# "orange", "orange", "red", "orange", "orange", "red",
# "red", "red", "orange", "orange", "red", "orange",
# "orange", "black", "black", "orange", "orange", "red",
# "red", "red", "black", "orange", "orange", "orange",
# "orange", "black", "orange", "orange", "orange", "orange",
# "red", "black", "red", "black", "orange", "orange",
# "orange", "black", "black", "black", "red", "red",
# "red", "red", "orange", "red", "orange", "red",
# "black", "orange", "orange", "black"
# )
# p["color"] <- cols_saved
# 

## ----IN 1 group by colour, eval = FALSE, echo = TRUE, tidy = FALSE, fig.align="center", fig.width = 5, fig.height = 5, out.width = "75%", warning=FALSE, message=FALSE----
# unique_cols <- unique(p['color'])
# group1 <- p['color'] == unique_cols[1]
# # Number in group 1 (e.g. as you might have -- here from saved colours)
# sum(group1)

## ----OUT 1 group by colour, eval = FALSE, echo = TRUE, tidy = FALSE, fig.align="center", fig.width = 5, fig.height = 5, out.width = "75%", warning=FALSE, message=FALSE----
# [1] 425

## ----IN 2 group by colour, eval = FALSE, echo = TRUE, tidy = FALSE, fig.align="center", fig.width = 5, fig.height = 5, out.width = "75%", warning=FALSE, message=FALSE----
# # Data on first few quakes in group 1.
# head(quakes[group1,])

## ----OUT 2 group by colour, eval = FALSE, echo = TRUE, tidy = FALSE, fig.align="center", fig.width = 5, fig.height = 5, out.width = "75%", warning=FALSE, message=FALSE----
#       lat   long depth mag stations
# 1  -20.42 181.62   562 4.8       41
# 2  -20.62 181.03   650 4.2       15
# 4  -17.97 181.66   626 4.1       19
# 5  -20.42 181.96   649 4.0       11
# 10 -17.47 179.59   622 4.3       19
# 11 -21.44 180.69   583 4.4       13

## ----getGroups, eval = FALSE, echo = TRUE, tidy = FALSE, fig.align="center", fig.width = 5, fig.height = 5, out.width = "75%", warning=FALSE, message=FALSE----
# getGroups <- function(loonplot){
#     # make sure it is an "l_plot"
#     if (!is(loonplot, "l_plot")) stop("loonplot must be an l_plot")
# 
#     # use color to identify groups
#     unique_cols <- unique(loonplot['color'])
#     lapply(unique_cols,
#            FUN = function(col){loonplot['color'] == col}
#            )
# }
# 
# myGroups <- getGroups(p)    # returns groups identified by unique colour in p
# nGroups <- length(myGroups) # number of groups
# group1 <- myGroups[[1]]     # each group is an element of the list myGroups

## ----set examples, eval = FALSE, echo = TRUE, tidy = FALSE, fig.align="center", fig.width = 5, fig.height = 5, out.width = "75%", warning=FALSE, message=FALSE----
# p["showGuides"] <- TRUE
# 
# p["size"] <- sample(1:30, size = length(p["x"]), replace = TRUE)
# 
# for (i in 1:length(myGroups))  {
#     p["selected"] <- myGroups[[i]]
#     Sys.sleep(1)
# }
# p["selected"] <- FALSE
# 
# # something a little more involved for up to 6 groups
# myCols <- c("firebrick", "steelblue", "purple",
#             "orange", "grey10", "grey80")
# for (i in 1:length(myGroups)) {
#     p["color"][myGroups[[i]]] <- myCols[i]
# }
# 
# # something crazy
# for (j in 1:10) {
#   p["xTemp"] <- p["x"] + runif(length(p["x"]), min = -0.5, max = 0.5)
#   Sys.sleep(0.1)
# }
# 
# # putting locations and size back
# p["xTemp"] <- p["x"]
# p["size"] <- 4
# 

## ----gettingAMap, eval = FALSE------------------------------------------------
# if (requireNamespace("maps", quietly = TRUE)) {
#   NZFijiMap <- map("world2",
#                  regions=c("New Zealand", "Fiji"),
#                  plot=FALSE)
# } else {
#   message("Please install maps to run this example.")
# }
# 
# 

## ----addingAMap,  eval = FALSE, echo = TRUE, fig.align="center", fig.width = 5, fig.height = 5, out.width = "75%", warning=FALSE, message=FALSE, tidy = FALSE----
# l_layer(p, NZFijiMap,
#         label = "New Zealand and Fiji",
#         color = "forestgreen",
#         index = "end")
# loon layer "New Zealand and Fiji" of type polygons of plot .l0.plot
# [1] "layer0"

## ----quakesGuidesMapInspector, out.width= "30%", fig.align="center", echo=FALSE----
knitr::include_graphics(file.path(imageDirectory, "quakesGuidesMapInspector.png"))

## ----quakesGuidesMap, out.width= "50%", fig.align="center", echo=FALSE--------
knitr::include_graphics(file.path(imageDirectory, "quakesGuidesMap.png"))

## ----worldViewScaling, out.width= "90%", fig.align="center", echo=FALSE-------
knitr::include_graphics(file.path(imageDirectory, "quakesWorldViewScaling.png"))

## ----quakesLayersInspector, out.width= "70%", fig.align="center", echo=FALSE----
knitr::include_graphics(file.path(imageDirectory, "quakesLayersInspector.png"))

## ----loon and base syntax, eval = FALSE, echo = TRUE, fig.align="center", fig.width = 6, fig.height = 5, out.width = "75%", warning=FALSE, message=FALSE, tidy=FALSE----
# # Base graphics
# plot(x = quakes$long, y = quakes$lat,
#      xlab = "longitude", ylab = "latitude",
#      main = "Tonga trench earthquakes")
# 
# # loon graphics
# l_plot(x = quakes$long, y = quakes$lat,
#        xlabel = "longitude", ylabel = "latitude",
#        title = "Tonga trench earthquakes")

## ----histogram of magnitude,  eval = FALSE, echo = TRUE, fig.align="center", fig.width = 5, fig.height = 5, out.width = "75%", warning=FALSE, message=FALSE, tidy = FALSE----
# h <- l_hist(quakes$depth,
#             xlabel = "depth",
#             title = "Tonga trench earthquakes")

## ----set linkingGroup mistake, eval = FALSE, warning=FALSE, message=FALSE, tidy = FALSE----
# h["linkingGroup"] <- "quakes"
# p["linkingGroup"] <- "quakes"

## ----fix colors again, eval = FALSE, fig.align="center", fig.width = 6, fig.height = 5, out.width = "60%", warning=FALSE, message=FALSE, tidy = FALSE----
# l_configure(h, linkingGroup = "quakes", sync = "push")
# l_configure(p, linkingGroup = "quakes", sync = "pull")

## ----histogram blues, eval = FALSE, fig.align="center", fig.width = 7, fig.height = 5, out.width = "60%", warning=FALSE, message=FALSE, tidy = FALSE----
# blues5 <- blues9[c(2,4,6,8,9)] # select 5 from light blue to dark
# h["color"] <- blues5[cut(quakes$depth, breaks=5)] # assign colours by depth
# p["glyph"] <- "ccircle"
# p["showGuides"] <- TRUE
# # plot(p) # will print the plot

## ----final quakes histograms, eval = FALSE, fig.align="center", fig.width = 5, fig.height = 5, out.width = "75%", warning=FALSE, message=FALSE, tidy = FALSE----
# h_mag <- l_hist(x = quakes$mag,
#                 linkingGroup = "quakes",
#                 showStackedColors = TRUE,
#                 yshows = "density",
#                 xlabel = "magnitude")
# 
# h_stations <- l_hist(x = quakes$stations,
#                      linkingGroup = "quakes",
#                      showStackedColors = TRUE,
#                      yshows = "density",
#                      xlabel = "Number of stations reporting")

## ----final quakes plot, eval = FALSE, fig.align="center", fig.width = 5, fig.height = 5, out.width = "75%", warning=FALSE, message=FALSE, tidy = FALSE----
# p_mag_stations <- l_plot(x = quakes$mag,
#                          y = quakes$stations,
#                          showGuides = TRUE,
#                          glyph = "ccircle",
#                          linkingGroup = "quakes",
#                          xlabel = "Magnitude",
#                          ylabel = "Number of stations reporting")

## ----eval = FALSE-------------------------------------------------------------
# new_order <- sample(1:nrow(quakes), nrow(quakes), replace = FALSE)
# some_quakes <-  sample(1:nrow(quakes), 100, replace = FALSE)
# quakes_linkingKey <- p["linkingKey"]
# p_new <- with(quakes[new_order,],
#               l_plot(long, lat, title = "quakes reordered",
#                      linkingGroup = "quakes",
#                      linkingKey = quakes_linkingKey[new_order] ))
# p_subset <- with(quakes[some_quakes,],
#               l_plot(long, lat, title = "quakes reordered",
#                      linkingGroup = "quakes",
#                      linkingKey = quakes_linkingKey[some_quakes]))

## ----plot_3D,  eval = FALSE, fig.align="center", fig.width = 5, fig.height = 5, out.width = "75%", warning=FALSE, message=FALSE, tidy = FALSE----
# # First, scale the data
# scaled_quakes <- l_scale3D(quakes)
# 
# p_mag_stations <- l_plot3D(x = scaled_quakes$long,
#                            y = scaled_quakes$lat,
#                            z = scaled_quakes$depth,
#                            showGuides = TRUE,
#                            linkingGroup = "quakes",
#                            title = "Three dimensional plot of quakes")

## ----eval=FALSE---------------------------------------------------------------
# help(package = "loon")

## ----eval=FALSE---------------------------------------------------------------
# l_web()
# # or more generally via the online loon (with complex examples)
# l_help()

## ----eval=FALSE---------------------------------------------------------------
# vignette("minorities", package = "loon")

## ----eval=FALSE---------------------------------------------------------------
# vignette("teaching-example-smoothing", package = "loon")

## ----eval=FALSE---------------------------------------------------------------
# vignette("Rmarkdown", package = "loon")

## ----loon demos, eval = FALSE-------------------------------------------------
# demo(package = "loon")  # list all demos

## ----loon demo examples, eval = FALSE-----------------------------------------
# ### teaching demos
# demo("l_regression",
#      package = "loon")  # lots using the Old Faithful geyser
# demo("l_regression_influential",
#      package = "loon")  # change points change the regression fit
# 
# ### gapminder
# demo("l_us_and_them",
#      package = "loon")  #  basic demo
# demo("l_us_and_them_slider",
#      package = "loon")  # year selected on a slider
# demo("l_us_and_them_choropleth",
#      package = "loon")  # world map and linked with a scatterplot
# 
# ### the spatial package sp
# demo("l_polygons_sp",
#      package = "loon")  # layer polygons with class sp
# 
# ### layering and custom layouts
# demo("l_layers")  # demonstrate layer types
# demo("l_layout")  # custom layout widgets
# demo("l_widgets") # inspector and plot in one window
# 
# ### novel brushing and linking
# demo("l_knn")     # brushing by k nearest points in some subspace
# demo("l_us_and_them_choropleth")  # many to one linking
# 
# ### high dimensional data and dimensionality reduction
# demo("l_ng_images_frey_LLE") # navigation graphs, image data, LLE
# demo("l_ng_dimred")          # comparing dimension reduction methods

## ----eval=FALSE---------------------------------------------------------------
# install.packages("zenplots")
# vignette("intro", package = "zenplots")

## ----grid grob, eval = FALSE, echo = TRUE, fig.align="center", fig.width = 5, fig.height = 5, out.width = "75%", warning=FALSE, message=FALSE, tidy = FALSE----
# gp <- loonGrob(p)
# gp

## ----OUT grid grob, eval = FALSE, echo = TRUE, fig.align="center", fig.width = 5, fig.height = 5, out.width = "75%", warning=FALSE, message=FALSE, tidy = FALSE----
# gTree[GRID.gTree.33]

## ----list grid grob, eval = FALSE---------------------------------------------
# library(grid)
# grid.ls(gp)  # lists the contents of the grob

## ----grid graphic display loon plot, eval = FALSE, echo = TRUE, fig.align="center", fig.width = 5, fig.height = 5, out.width = "75%", warning=FALSE, message=FALSE, tidy = FALSE----
# library(grid)
# grid.newpage()
# grid.loon(p)