2017-03-29 14 views
0

나는이 두 그래프를 결합하려는.스마트 협회 ggplot2

그래프 p2가 다른 그래프와 크기가 같고 마지막면 그래프 옆에 위치하기를 바랍니다.

library(ggplot2) 

ggplot(iris, aes(Sepal.Length)) + 
    geom_density() + 
    facet_grid(. ~ Species, margins = T) 

당신이 만약 :이 일반적인 경우에 적용하지만, 대신 facet_wrapfacet_grid와 함께, 당신은 margins 인수를 사용할 수 있는지 도움을

감사

+0

'facet_grid (~ Species, margins = TRUE)'가 여기에서 작동합니다. 그러나 일반적인 경우에, 이것은 쉬운 일이 아닙니다. 'cowplot' 패키지는 정렬을 수행하지만, 패싯이 아닌 플롯은 정렬 할 수 없습니다. – Axeman

답변

0

확실하지 않음 질문은 좀 더 일반적인 대답은 아마도 grid.arrange에 놓여 있습니다. 이 같은
뭔가 시작이 될 수 :

library(gridExtra) 

grid.arrange(arrangeGrob(p1, p2, 
         widths = c(3,1), 
         heights = c(1,20), 
         layout_matrix = matrix(c(1,1,NA,2),2))) 

당신이 거기에 몇 가지 문제 (다른 축, 최고 스트립)하지만 grid와 함께 작업하는 빠르고 복잡해진다 수 있습니다 볼 수 있듯이.

0

이 코드는 작동합니다 :

p1 <- ggplot(iris, aes(Sepal.Length)) + 
     geom_density() + 
     ylim(limits = c(0, 1.25))+ 
     facet_wrap(~ Species) 

p2 <- ggplot(iris, aes(Sepal.Length)) + 
     geom_density() + 
     ggtitle("") + # ad empty title as place holder 
     labs(y = "", x = "") + # hide axis labels 
     ylim(limits = c(0, 1.25)) + # y axis values should be fixed in both plots 
     coord_fixed(ratio=20/1) + # ratio of x- and y-axis to reduce width of plot 
     theme(axis.ticks.y = element_blank(), axis.text.y = element_blank(), axis.line.y = element_blank(), 
     plot.margin=unit(c(0,0,0.65,-10), "lines")) # margin between plots = "0.65" 

나는 조금 바이올린이 결과를 단지 다른 스타일 옵션을 사용했다. 이보다 더 많은 플롯이 있다면 나는 모두에게 하나의 테마를 사용하도록 권합니다.

이미

multiplot(p1, p2, cols = 2) 

를 사용하고 있는지 당신은 multiplot 기능을 사용하거나 패키지 gridExtra 그리드를 설치 한 것을 사용

grid.arrange(p1, p2, ncol=2) 

희망이 도움이!