2012-10-23 14 views
17

Czy istnieje sposób, aby umieścić wykres generowany przez funkcję plot, a wykres za pomocą funkcji ggplot w R na jednej stronie obok siebie?wykresy wygenerowane przez 'plot' i 'ggplot' obok siebie:

Łatwo jest umieścić działki utworzone przez tę samą funkcję na jednej stronie przy użyciu funkcji par lub multiplot, ale nie mogę zrozumieć powyższego pytania.

+0

możesz zajrzeć do pakietu 'gridExtra'. Może to zrobić, jak sądzę. – Justin

Odpowiedz

26

Możesz to zrobić, używając pakietu gridBase i viewPorts.

library(grid) 
library(gridBase) 
library(ggplot2) 

# start new page 
plot.new() 

# setup layout 
gl <- grid.layout(nrow=1, ncol=2) 
# grid.show.layout(gl) 

# setup viewports 
vp.1 <- viewport(layout.pos.col=1, layout.pos.row=1) 
vp.2 <- viewport(layout.pos.col=2, layout.pos.row=1) 
# init layout 
pushViewport(viewport(layout=gl)) 
# access the first position 
pushViewport(vp.1) 

# start new base graphics in first viewport 
par(new=TRUE, fig=gridFIG()) 

plot(x = 1:10, y = 10:1) 

# done with the first viewport 
popViewport() 

# move to the next viewport 
pushViewport(vp.2) 

ggplotted <- qplot(x=1:10,y=10:1, 'point') 
# print our ggplot graphics here 
print(ggplotted, newpage = FALSE) 

# done with this viewport 
popViewport(1) 

enter image description here

Przykład ten jest zmodyfikowaną wersją this blog post przez Dylan Beaudette

+0

Dałeś bardzo schludną odpowiedź. Dzięki. – Elaine

+0

Skąd pochodzi gridFIG()? –

2

Tak. Oba są graficznymi systemami opartymi na siatce i zwracają obiekty graficzne. Rzuć okiem na funkcję grid.arrange w gridExtra package

+0

Czy to powinno być * Jeśli * są to systemy graficzne oparte na siatce? – mnel

+0

Być może czytałem wcześniejszą wersję, która mówiła "krata" i "ggplot2" ... albo to piwo, które piję, ma szczególne cechy. Jedna z tych głosów w górę za twoją odpowiedź jest moja. –

+0

funkcja wydruku nie jest oparta na siatce. Prawdopodobnie o to ci chodzi, DWin? Czytałem jednak, że istnieją sposoby na osadzenie wykresu w systemie siatki. – JAponte