2013-08-24 6 views
2

Там находится очень удобный способ построения нескольких графиков и что с gridExtra - grid.arrange:Несколько решетчатые участки с gridExtra

grid.arrange(plot1,plot2,plot3,plot4,plot5,plot6,plot7,plot8,plot9, ncol=3) 

Вышеуказанная команда черпает 3x3 графиков в одном окне.

Теперь, я использую свою собственную установку решетки, чтобы сделать уникальные линии и т.д. с помощью

trellis.par.set(my.setup) 

Однако с помощью команды grid.arrange для построения нескольких графиков не будет проходить на установке в качестве выходных участков находятся в цветах по умолчанию.

Итак, вопрос заключается в том, как передать my.setup на grid.arrange или, альтернативно, как легко построить несколько графиков за один раз для решетки.

EDIT: Воспроизводимый пример:

Data <- data.frame(Col1=rnorm(10,0,1),Col2=rexp(10,2),Col3=rnorm(10,2,2),Col4=runif(10,0,2), 
     Time=seq(1,10,1)) 

trellis.par.set(col.whitebg()) 
newSet <- col.whitebg() 
newSet$superpose.symbol$col <- c("blue3","orange2","gray1","tomato3") 
newSet$superpose.symbol$pch <- 1 
newSet$superpose.symbol$cex <- 1 
newSet$superpose.line$col <- c("blue3","orange2","gray1","tomato3") 
trellis.par.set(newSet) 

Plot1 <- xyplot(Col1+Col2~Time, Data, type="spline") 
Plot2 <- xyplot(Col2+Col3~Time, Data, type="spline") 
Plot3 <- xyplot(Col1+Col3~Time, Data, type="spline") 
Plot4 <- xyplot(Col3+Col4~Time, Data, type="spline") 

grid.arrange(Plot1,Plot2,Plot3,Plot4, ncol=2) 
+0

Построить графики в среде, где 'my.setup' является текущий 'trellis.par'. –

+0

@ DWin. Извините, не могли бы вы быть более конкретными? – Maximilian

+0

Решетка имеет встроенную функциональность для организации нескольких графиков на странице (даже нескольких страниц), что может быть лучшим подходом. '? решетка ::: print.trellis' – baptiste

ответ

5

Я предполагаю, что это что-то делать с методом plot.trellis не найти настройки глобальной темы, когда она обернута в gridExtra::drawDetails.lattice получил. Я не понимаю эти параметры решетки, но, насколько я помню, вы можете указать их явно на уровне сюжета тоже,

pl = list(Plot1, Plot2, Plot3, Plot4) 
# do.call(grid.arrange, c(pl, nrow=1)) 
do.call(grid.arrange, c(lapply(pl, update, par.settings=newSet), list(nrow=1))) 

enter image description here

+0

Ницца, это он, thx! – Maximilian

+0

КПП. как бы это выглядело, если у меня есть 3 сюжета, и я хочу их горизонтально, а не вертикально? В приведенном выше примере, предоставляя pl = list (Plot1, Plot2, Plot3), график вертикален (ниже друг друга). Благодарю. – Maximilian

+0

Но это не будет использовать мою текущую настройку newSet, линии в цветах по умолчанию. – Maximilian

Смежные вопросы