## ----setup, include=FALSE----------------------------------------------------- knitr::opts_chunk$set(echo = TRUE, warning = FALSE, message = FALSE, fig.align = "center", fig.width = 6, fig.height = 5, out.width = "60%", tidy.opts = list(width.cutoff = 65), tidy = FALSE) library(loon) library(grid) library(gridExtra) imageDirectory <- file.path(".", "images", "loonPlotsAndGridGraphics") # dataDirectory <- file.path(".", "data", "loonPlotsAndGridGraphics") ## ----loon plot, eval = FALSE-------------------------------------------------- # library(loon) # p <- with(mtcars, l_plot(mpg, hp, # size = 8, # showScales = TRUE)) ## ----query, eval = FALSE------------------------------------------------------ # # x coordinates # p['x'] ## ----eval = FALSE------------------------------------------------------------- # # point size # p['size'] ## ----plot, eval = FALSE------------------------------------------------------- # # `p` is a loon widget # plot(p) ## ----fig.align="center", echo=FALSE------------------------------------------- knitr::include_graphics(file.path(imageDirectory, "loonPlotp.png")) ## ----save plot draw, eval = FALSE--------------------------------------------- # g0 <- plot(p) ## ----save plot, eval = FALSE-------------------------------------------------- # g0 <- plot(p, draw = FALSE) ## ----loonGrob, eval = FALSE--------------------------------------------------- # g0 <- loonGrob(p) ## ----draw graphics, eval = FALSE---------------------------------------------- # library(grid) # grid.newpage() # grid.draw(g0) ## ----echo=FALSE--------------------------------------------------------------- knitr::include_graphics(file.path(imageDirectory, "loonPlotg0.png")) ## ----eval = FALSE------------------------------------------------------------- # oldColor <- p["color"] # set.seed(3141) # selection <- sample(c(TRUE, FALSE), # size = length(oldColor), # replace = TRUE) # p["color"] <- selection # gtrans <- loonGrob(p) # p["active"] <- selection # gauto <- loonGrob(p) # p["active"] <- !selection # gmanual <- loonGrob(p) # p["active"] <- TRUE # p["color"] <- oldColor ## ----eval=FALSE--------------------------------------------------------------- # library(gridExtra) # grid.newpage() # grid.arrange(g0, gtrans, gauto, gmanual, nrow = 2) ## ----echo=FALSE, out.width = "80%"-------------------------------------------- knitr::include_graphics(file.path(imageDirectory, "gridArrange.png")) ## ----class, eval = FALSE------------------------------------------------------ # class(g0) ## ----grob data structure, eval = FALSE---------------------------------------- # grid.ls(g0) ## ----hierarchy, out.width= "80%", fig.align="center", echo=FALSE-------------- knitr::include_graphics(file.path(imageDirectory, "loonGrobNestedDataTree.png")) ## ----getGrob, eval = FALSE---------------------------------------------------- # # retrieve xlabel grob # xlabelGrob <- getGrob(g0, "x label") # xlabelGrob ## ----eval = FALSE------------------------------------------------------------- # class(xlabelGrob) ## ----eval = FALSE------------------------------------------------------------- # names(xlabelGrob) ## ----eval = FALSE------------------------------------------------------------- # xlabelGrob$label ## ----eval = FALSE------------------------------------------------------------- # xAxisGrob <- getGrob(g0, "x axis") # names(xAxisGrob) ## ----eval = FALSE------------------------------------------------------------- # names(xAxisGrob$children) ## ----editGrob, eval = FALSE--------------------------------------------------- # newGrob = editGrob(xlabelGrob, # label = "Miles per (US) gallon") ## ----editGrob return, eval = FALSE-------------------------------------------- # class(newGrob) ## ----more meaningful label, eval = FALSE-------------------------------------- # newGrob$label ## ----modify grob, eval = FALSE------------------------------------------------ # g0 <- setGrob(gTree = g0, # gPath = "x label", # newGrob = newGrob) ## ----redraw, eval = FALSE----------------------------------------------------- # grid.newpage() # grid.draw(g0) ## ----echo=FALSE--------------------------------------------------------------- knitr::include_graphics(file.path(imageDirectory, "loonPlotg0Xlabel.png")) ## ----alpha, eval = FALSE------------------------------------------------------ # pathGrob <- "points: primitive glyphs" # newLoonPointsGrob <- # editGrob( # getGrob(g0, pathGrob), # gp = gpar(fill = as_hex6color(p['color']), # col = l_getOption("foreground"), # fontsize = 20, # give a larger point size, # alpha = 0.3 # turn color transparent # ) # ) # # update loon points grob # g0 <- setGrob( # gTree = g0, # gPath = "points: primitive glyphs", # newGrob = newLoonPointsGrob # ) # grid.newpage() # grid.draw(g0) ## ----echo=FALSE--------------------------------------------------------------- knitr::include_graphics(file.path(imageDirectory, "loonPlotg0Alpha.png")) ## ----eval = FALSE------------------------------------------------------------- # titleGrob <- getGrob(g0, "title: textGrob arguments") # titleGrob$label ## ----eval = FALSE------------------------------------------------------------- # class(titleGrob) ## ----eval = FALSE------------------------------------------------------------- # g1 <- l_instantiateGrob(g0, "title: textGrob arguments", # label = "1974 Motor Trend cars data", # gp = gpar(col = "blue", # fontsize = 8)) # grid.newpage() # grid.draw(g1) ## ----echo=FALSE--------------------------------------------------------------- knitr::include_graphics(file.path(imageDirectory, "loonPlotg1.png")) ## ----eval = FALSE------------------------------------------------------------- # g2 <- l_instantiateGrob(g0, "title: textGrob arguments", # label = "1974 Motor Trend cars data", # gp = gpar(col = "red")) # g2 <- l_setGrobPlotView(g2) # grid.newpage() # grid.draw(g2) ## ----echo=FALSE--------------------------------------------------------------- knitr::include_graphics(file.path(imageDirectory, "loonPlotg2.png")) ## ----eval = FALSE------------------------------------------------------------- # p['showLabels'] <- FALSE # g3 <- loonGrob(p) # grid.newpage() # grid.draw(g3) ## ----echo=FALSE--------------------------------------------------------------- knitr::include_graphics(file.path(imageDirectory, "loonPlotg3.png")) ## ----eval = FALSE------------------------------------------------------------- # grid.ls(g3) ## ----eval = FALSE------------------------------------------------------------- # g4 <-l_instantiateGrob(g3, # "title: textGrob arguments", # x = unit(8, "native"), # just = "left", # label = "Motor Trend Magazine 1974") # # g4 <-l_instantiateGrob(g4, # "x label: textGrob arguments", # label = "Miles per US gallon", # x = unit(35, "native"), # y = unit(-1.5, "lines"), # just = "right", # gp = gpar(fontsize = 15, # fontface = "italic", # col = "blue")) # # g4 <-l_instantiateGrob(g4, # "y label: textGrob arguments", # label = "Horse power", # rot = 45, # x = unit(7, "native"), # y = unit(275, "native"), # just = "right", # gp = gpar(fontsize = 15, # fontface = "italic", # col = "blue")) # # g4 <- l_setGrobPlotView(g4) # grid.newpage() # grid.draw(g4) ## ----echo=FALSE--------------------------------------------------------------- knitr::include_graphics(file.path(imageDirectory, "loonPlotg4.png")) ## ----eval = FALSE------------------------------------------------------------- # # add text glyph # carNames <- l_glyph_add_text(p, text = rownames(mtcars)) # p['glyph'] <- carNames # # loonGrob # g2 <- loonGrob(p) # getGrob(g2, "points: mixed glyphs") ## ----eval = FALSE------------------------------------------------------------- # grid.newpage() # grid.draw(g2) ## ----echo=FALSE--------------------------------------------------------------- knitr::include_graphics(file.path(imageDirectory, "loonPlotg2Text.png"))