2017-10-20 8 views
1

관련 질문 및 대답 here을 참조하십시오.R 'cowplot'은 공유 된 (공통) 범례와 고유 한 범례가있는 격자 선을 깔끔하게 만듭니다.

허용 된 답변과 비슷한 플롯 즉 공용 공통 범례와 그리드의 각 플롯에 다른 고유 범례가 첨부 된 격자 형 플롯을 생성하려고합니다.

특히, 각 행에 1 개의 플롯이있는 3 행 1 열 그리드가 필요합니다. 이처럼 다음 코드로 제작되었습니다

enter image description here

:

library (ggplot2) 
    library(gridExtra) 
    library (grid) 
    library(cowplot) 


    diamonds2 <- diamonds[sample(nrow(diamonds), 500), ] 

    # 3 ggplot plot objects with multiple legends 1 common legend and 3 unique legends 

    p1<- ggplot(diamonds2, aes(x=price, y= depth, color= clarity , shape= cut)) + 
geom_point(size=5) + labs (shape = "unique legend", color = "common legend") 

    p2 <- ggplot(diamonds2, aes(x=price, y= depth, color= clarity , shape= color)) + 
geom_point(size=5) + labs (shape = "unique legend", color = "common legend") 

    p3 <- ggplot(diamonds2, aes(x=price, y= depth, color= clarity , shape= clarity)) + 
geom_point(size=5) + labs (shape = "unique legend", color = "common legend") 

    cowplot::plot_grid(
    cowplot::plot_grid(
    p1 + scale_color_discrete(guide = FALSE), 
    p2 + scale_color_discrete(guide = FALSE), 
    p3 + scale_color_discrete(guide = FALSE), 
    nrow=3, ncol = 1)) 

그러나 각 플롯 객체의 color = 인수에 관한 공유 전설

.

cowplot 설명서와 관련하여 다양한 인수/매개 변수를 추가/조정/제거했지만 아래의 공유 범례와 같이 깔끔한 줄거리를 얻을 수 없습니다 (예 : 또는 어디에서나 유용합니다!) - 내가 시도한 모든 것은 아래처럼 복잡한 그림을 반환합니다.

공유 전설 포함하는 위의 코드의

적응력 :

cowplot::plot_grid(
    cowplot::plot_grid(
    p1 + scale_color_discrete(guide = FALSE), 
    p2 + scale_color_discrete(guide = FALSE), 
    p3 + scale_color_discrete(guide = FALSE), 
    nrow=3, ncol = 1 
    ), 
    cowplot::get_legend(p1 + scale_shape(guide = FALSE) + theme(legend.position = "bottom")), nrow=3) 

빈 공간이 많은 같이 붐비는 플롯 결과 :

enter image description here

사람이 어디 제안 할 수 나는 잘못 가고 있을지도 모른다?

답변

1

plot_grid을 호출 할 때마다 플로팅 영역이 분할됩니다. 여기에 plot_grid에 대한 두 번의 호출이 중첩되어 있으며 각각에 3 개의 행을 요구하고 있습니다. cowplot 따라서 동일한 두 부분에서 플로팅 영역 분할 : 상단 부분에

  • 를, 당신의 전설 아래 두 아무것도, 첫 번째 행을 소요, 하단 부분에 산포도
  • 을두고 행은 빈 공간을 많이 생성하면서 산점도를 급하게 만듭니다.

플롯 영역의 상대적 높이를 지정하여 분산 형 플롯에 더 많은 공간을 제공하고 하단에 범례 공간을 적게 지정할 수 있습니다. 생산

cowplot::plot_grid(
    cowplot::plot_grid(
    p1 + scale_color_discrete(guide = FALSE), 
    p2 + scale_color_discrete(guide = FALSE), 
    p3 + scale_color_discrete(guide = FALSE), 
    ncol = 1, align = "v" 
    ), 
    cowplot::get_legend(p1 + scale_shape(guide = FALSE) + 
     theme(legend.position = "bottom")), 
    ncol=1, rel_heights=c(.85, .15)) 

: 85 % 플롯에 대한 예, 15 % 전설의 경우

enter image description here

+0

아 - 지금은 분명하다. 아주 명확하게 설명해 주셔서 감사합니다. 결과 플롯을 포함하도록 답을 편집했습니다. 괜찮습니다. –