Вложение миниатюрного сюжета в сюжет

Знает ли кто-нибудь общий способ встраивания графиков в другие графики для создания чего-то вроде макета ниже?

Я знаю, что в решетке вы можете сделать это с помощью print(..., more=TRUE, positions=...), как описано в этом вопросе, и я полагаю, что ggplot также имеет решение (но я ' m не очень хорошо с ggplot). Проблема в том, что я хочу встроить обычный сюжет из пакета выживания, который использует стандартный графический пакет в графике решетки.

A mockup of an embedded plot

Спасибо заранее!

Ответ 1

Вы можете попробовать пакет gridBase, который предоставляет некоторые функции для интеграции базовой и грид-графики (включая решетку и ggplot2). В приведенном ниже примере встроен базовый графический график внутри участка решетки.

library(lattice)
library(gridBase)
library(grid) 

plot.new()
pushViewport(viewport())
xvars <- rnorm(25)
yvars <- rnorm(25)
xyplot(yvars~xvars)
pushViewport(viewport(x=.6,y=.8,width=.25,height=.25,just=c("left","top")))
grid.rect()
par(plt = gridPLT(), new=TRUE)
plot(xvars,yvars)
popViewport(2)

Подробнее здесь: http://casoilresource.lawr.ucdavis.edu/drupal/node/1007 И здесь: http://cran.r-project.org/web/packages/gridBase/vignettes/gridBase.pdf

Ответ 2

И вот способ сделать это наоборот, графический файл ggplot2 в базовом графике:

require(ggplot2)
require(grid)

plot(sin, -pi, 2*pi)
qp <- qplot(mpg, wt, data=mtcars)
print(qp, vp=viewport(.8, .75, .2, .2))

enter image description here

Ответ 3

Посмотрите пакет пакетных пакетов обучения пакет TeachingDemos - и функция subplot() Он может работать и на решетке - не нужно попробовал, хотя.