
# EXERCISE: lattice-identify
library(lattice)
xyplot(mpg ~ disp, mtcars, main="Fast Cars")
        
# answer
library(grid)
grid.ls()
# plot_01.main

# answer
library(grid)
grid.ls(viewports=TRUE, fullNames=TRUE)
# plot_01.main.vp
          
# EXERCISE: lattice-modify
library(lattice)
xyplot(mpg ~ disp, mtcars, main="Fast Cars")
        
# answer
library(grid)
grid.edit("plot_01.main", gp=gpar(col="red"))
          
# answer
library(grid)
grid.remove("plot_01.main")
          
# EXERCISE: lattice-viewport
library(lattice)
xyplot(mpg ~ disp, mtcars, main="Fast Cars")
        
# answer
library(grid)
downViewport("plot_01.main.vp")
grid.rect()
          
# EXERCISE: lattice-viewport-add
library(lattice)
xyplot(mpg ~ disp, mtcars, main="Fast Cars")
        
# answer
library(grid)
downViewport("plot_01.panel.1.1.vp")
grid.segments(0, unit(25, "native"),
              1, unit(25, "native"))
upViewport(0)
          
# answer
library(grid)
downViewport("plot_01.panel.1.1.vp")
grid.text("Pontiac Firebird",
          x=unit(400, "native") + unit(1, "mm"),
          y=unit(19.2, "native") + unit(1, "mm"),
          just=c("left", "bottom"))
upViewport(0)
          
# EXERCISE: grid-viewport-create
library(lattice)
xyplot(mpg ~ disp, mtcars, main="Fast Cars")
        
# answer
library(grid)
grid.newpage()
pushViewport(viewport(x=.5, y=0, width=.5, height=.5,
                      just=c("left", "bottom")))
print(xyplot(mpg ~ disp, mtcars, main="Fast Cars"),
      newpage=FALSE)
upViewport()
          
# EXERCISE: ggplot2-plot
library(ggplot2)
qplot(disp, mpg, data=mtcars, main="Fast Cars")
        
# answer
downViewport("title.2-4-2-4")
grid.rect(gp=gpar(col=NA, fill=rgb(0,0,1,.5)), name="r")
          
# answer
grid.edit("title.2-4-2-4", x=unit(1, "npc"), hjust=1)
          
# answer
# MUCH easier if you gave the grob a name in the previous answer!
grid.remove("r")
          
# EXERCISE: graphics-plot
plot(mpg ~ disp, mtcars, pch=16, main="Fast Cars")
        
# answer
plot(mpg ~ disp, mtcars, pch=16, main="Fast Cars")
library(gridGraphics)
grid.echo()
grid.edit("graphics-plot-1-main-1", gp=gpar(col="red"))
          
# answer
plot(mpg ~ disp, mtcars, pch=16, main="Fast Cars")
library(gridGraphics)
grid.echo()
grid.remove("graphics-plot-1-main-1")
          
# answer
plot(mpg ~ disp, mtcars, pch=16, main="Fast Cars")
library(gridGraphics)
grid.echo()
grid.edit("graphics-plot-1-main-1", gp=gpar(col="red"))
          
# answer
layout <- grid.layout(5, 3, widths=c(1, 7, 1),
                      heights=c(.5, 1, 1, 1, 2))
grid.show.layout(layout)
grid.newpage()
pushViewport(viewport(layout=layout))
pushViewport(viewport(layout.pos.row=1))
grid.rect(); grid.text("5")
popViewport()
pushViewport(viewport(layout.pos.row=2, layout.pos.col=2))
grid.rect(); grid.text("1")
popViewport()
pushViewport(viewport(layout.pos.row=3, layout.pos.col=2))
grid.rect(); grid.text("2")
popViewport()
pushViewport(viewport(layout.pos.row=4, layout.pos.col=2))
grid.rect(); grid.text("3")
popViewport()
pushViewport(viewport(layout.pos.row=5, layout.pos.col=2))
grid.rect(); grid.text("4")
popViewport()
pushViewport(viewport(layout.pos.row=2:5, layout.pos.col=1))
grid.rect(); grid.text("6")
popViewport()
pushViewport(viewport(layout.pos.row=2:5, layout.pos.col=3))
grid.rect(); grid.text("7")
popViewport()
        
# EXERCISE: grid-grob-units
grid.newpage()
grid.text("label 1", 1/3, 2/3, name="l1")
grid.text("label two", 2/3, 1/3, name="l2")
        
# answer
grid.circle(1/3, 2/3, r=0.5*grobWidth("l1") + unit(1, "mm"),
            name="c1")
grid.circle(2/3, 1/3, r=0.5*grobWidth("l2") + unit(1, "mm"),
            name="c2")
          
# answer
grid.segments(grobX("c1", 315), grobY("c1", 315),
              grobX("c2", 135), grobY("c2", 135))
          
# EXERCISE: lattice-iris
library(lattice)
xyplot(jitter(Sepal.Length) ~ jitter(Sepal.Width), 
       group=Species, iris,
       par.settings=list(
           superpose.symbol=list(pch=21, 
                                 col="black",
                                 fill="grey")))
        
# answer
library(gridSVG)
grid.filter("group.[12]", grep=TRUE, global=TRUE,
            filterEffect(feGaussianBlur(sd=3)))
grid.export("lattice-iris-blur.svg")            
          
