## ----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) set.seed(12314159) library(loon.data) library(loon) library(gridExtra) imageDirectory <- file.path(".", "images", "savingLoonPlots") dataDirectory <- file.path(".", "data", "savingLoonPlots") ## ----basic plots, eval = FALSE------------------------------------------------ # library(loon) # # First, make sure you always assign a loon plot to a variable # # at the same time that you create it. This will give you access # # to it later. # # (NB: If you haven't assigned it, you can later using l_getFromPath(). ) # # # # A histogram, the name for the linkingGroup is arbitrary # h <- l_hist(iris$Sepal.Length, color = "grey", xlabel = "Sepal length", # linkingGroup = "flowers") # # # # A scatterplot # p <- l_plot(iris$Petal.Width, iris$Petal.Length, # color = "grey", size = 10, # xlabel = "Petal Width", ylabel = "Petal Length", # linkingGroup = "flowers") # # # # A serial axes plot using the first 4 columns of iris (i.e. no Species info). # sa <- l_serialaxes(iris[, 1:4], # color = "grey", linkingGroup = "flowers") # # # # A static version of the plot can be easily produced. # plot(h) ## ----grid packages, fig.width = 16, fig.height = 5, eval=FALSE---------------- # library(grid); library(gridExtra) ## ----several plots, fig.width = 16, fig.height = 5, eval = FALSE-------------- # # First get the data stuctures corresponding to the static snapshots # # of the current plots. Because we want to arrange them, we don't # # draw them at first. # plot_h <- plot(h, draw = FALSE) # plot_p <- plot(p, draw = FALSE) # plot_sa <- plot(sa, draw = FALSE) # # Now we draw them # grid.arrange(plot_h, plot_p, plot_sa, nrow = 1) ## ----several plots changed, fig.width = 16, fig.height = 5, eval = FALSE------ # # Change the colour by changing it *programmatically* on the plot # # # h["color"] <- iris$Species # use species to determine the colours # plot_h <- plot(h, draw = FALSE) # plot_p <- plot(p, draw = FALSE) # plot_sa <- plot(sa, draw = FALSE) # # And draw them again # grid.arrange(plot_h, plot_p, plot_sa, nrow = 1) ## ----plot states,eval=FALSE--------------------------------------------------- # # Accessing values # head(sa["color"]) # will show the current colours of sa # # Note that these colours are expressed as 12 hexadecimal digits # # This is what is used in TCL. To turn them into R's 6 digit hexadecimal # # (to use in other R static plots, for example) just use hex12tohex6() # hex12tohex6(sa["color"][1:3]) # # Setting values ... make only specied iris versicolor active # sa["active"] <- iris$Species == "versicolor" # plot(sa) # # Setting values ... make everything active # sa["active"] <- TRUE # plot(sa) ## ----l_export, eval = FALSE--------------------------------------------------- # l_export(p, filename = "myplot_via_l_export.pdf", height = 500, width = 600) ## ----png device, eval = FALSE------------------------------------------------- # if (requireNamespace("png", quietly = TRUE)) { # # turn the png graphics device on with name of the file # png(file = "myplot_via_R.png", width = 600, height = 500) # # Draw the static plot # plot(p) # # Turn the device off/close the file # dev.off() # } else { # message("Please install png to run this example.") # } ## ----show the saved plots, eval = FALSE--------------------------------------- # # The one exported from RStudio # knitr::include_graphics("myplot_via_RStudio.png") # # Followed by the one saved using l_export # # (note that background grid is missing) # knitr::include_graphics("myplot_via_l_export.pdf") # # And finally, the one saved using R's png device # knitr::include_graphics("myplot_via_R.png") ## ----load the saved plots, echo = FALSE, eval=FALSE--------------------------- # # The one exported from RStudio # knitr::include_graphics(file.path(imageDirectory, "myplot_via_RStudio.png")) # # Followed by the one saved using l_export # # (note that background grid is missing) # knitr::include_graphics(file.path(imageDirectory, "myplot_via_l_export.pdf")) # # And finally, the one saved using R's png device # knitr::include_graphics(file.path(imageDirectory, "myplot_via_R.png")) ## ----p saveStates, eval = FALSE----------------------------------------------- # l_saveStates(p, file = "p_savedStates") ## ----show get p states back, eval = FALSE------------------------------------- # p_savedStates <- l_getSavedStates(file = "p_savedStates") ## ----get p states back, echo = FALSE------------------------------------------ p_savedStates <- l_getSavedStates(file = file.path(dataDirectory, "p_savedStates")) ## ----new plot and copy, eval = FALSE------------------------------------------ # new_p <- l_plot(iris$Petal.Width, iris$Petal.Length) # l_copyStates(source = p_savedStates, target = new_p) ## ----plot new_p, eval = FALSE------------------------------------------------- # plot(new_p) ## ----default states----------------------------------------------------------- names(p_savedStates) ## ----zoom and change glyphs on p, echo = FALSE, eval = FALSE------------------ # p["selected"] <- iris$Species == "versicolor" # l_move_jitter(p, which = "selected") # l_scaleto_selected(p) # p["selected"] <- FALSE # sample <- sample(1:nrow(iris), 50, replace = FALSE) # p["glyph"][sample] <- "ctriangle" # p["size"][sample] <- 30 # plot(p) ## ----save states zooming, eval = FALSE--------------------------------------- # l_saveStates(p, # states = names(p), # file = "p_focusOnVersicolor") ## ----eval = FALSE------------------------------------------------------------- # p_focusOnVersicolor <- l_getSavedStates(file = "p_focusOnVersicolor") ## ----echo = FALSE------------------------------------------------------------- p_focusOnVersicolor <- l_getSavedStates(file = file.path(dataDirectory, "p_focusOnVersicolor")) ## ----copy all but basic states, eval = FALSE---------------------------------- # l_copyStates(source = p_focusOnVersicolor, # target = new_p, # returnNames = TRUE) ## ----a changed new_p, eval = FALSE-------------------------------------------- # plot(new_p) ## ----copy all states, eval = FALSE-------------------------------------------- # l_copyStates(source = p_focusOnVersicolor, # target = new_p, # excludeBasicStates = FALSE) ## ----final plot focus on versicolor, eval = FALSE----------------------------- # plot(new_p)