[r] ggplot2에서 facet_wrap ()과 facet_grid ()의 차이점은 무엇입니까?
ggplot2
두 기능에 대한 문서를 읽었습니다 . 차이점이 무엇이고 각 기능 ( facet_wrap()
및 facet_grid()
) 을 사용하는 데 적합한 상황이 무엇인지 궁금합니다 .
library(ggplot2)
p <- qplot(displ, hwy, data = mpg)
p + facet_wrap(~ cyl)
p + facet_grid(~ cyl)
이 작은 예를 시작점으로 제공합니다. 차이점은 줄 바꿈으로 인해 플롯이 더 자율적으로 만들어지고 그리드는 하나의 플롯을 모두 함께 만듭니다.
답변
아래 답변은 facet_grid()
또는에 2 개의 인수가있는 경우를 나타냅니다 facet_wrap()
.
facet_grid(x ~ y)
x*y
일부 플롯이 비어 있어도 플롯 을 표시 합니다. 전의:
library(ggplot2)
g <- ggplot(mpg, aes(displ, hwy))
4 개의 개별 실린더와 7 개의 개별 클래스 값이 있습니다.
g + geom_point(alpha=1/3) + facet_grid(cyl~class)
위의 그림은 일부가 비어 있어도 4 * 7 = 28 플롯을 표시합니다 (클래스가 다른 클래스에 해당하는 실린더 값이 없기 때문입니다 (예 : class = “midsize”가있는 행에 해당 cyl = “5”값이 없음).)
facet_wrap(x ~ y)
. 손, 실제 값이있는 플롯 만 표시합니다.
g + geom_point(alpha=1/3) + facet_wrap(cyl~class)
현재 19 개의 플롯이 표시되며, 실린더와 클래스의 모든 조합에 대해 하나씩 있습니다.
답변
facet_wrap(...)
ggplots
단일 변수를 기반으로 서로 다른 프레임 (패싯)에 함께 문자열 . facet_grid(...)
두 가지 변수를 사용할 수 있습니다.
p + facet_grid(cyl~class)
세 번째 변수를 사용하여 각 패싯에서 그룹화 할 수도 있습니다.
qplot(displ, hwy, data=mpg,color=factor(year)) + facet_grid(cyl~class)
# 실린더 및 등급별 배기량 대비 hwy 마일리지의 개선 (또는 부족)을 보여줍니다.
답변
단일 변수 그림의 경우 facet_grid()
또는을 사용할 수 있습니다 facet_wrap()
.
facet_wrap(~variable)
의 수준 수에 대해 플롯의 대칭 행렬을 반환합니다 variable
.
facet_grid(.~variable)
variable
수평 으로 분산 된 수준과 동일한 패싯을 반환합니다 .
facet_grid(variable~.)
variable
수직 으로 분산 된 수준과 동일한 패싯을 반환합니다 .
답변
주로 ggplot2 책에서 인용, p. 148f.
세 가지 유형의 패싯이 있습니다.
facet_null()
: 단일 플롯, 기본값입니다.facet_wrap()
: 패널의 1d 리본을 2d로 “포장”합니다.facet_grid()
: 행과 열을 형성하는 변수에 의해 정의 된 패널의 2D 그리드를 생성합니다.
패싯 랩
facet_wrap()
긴 패널 리본 (여러 변수에 의해 생성됨)을 만들고 2D로 래핑합니다. 이는 여러 수준의 단일 변수가 있고보다 공간 효율적인 방식으로 플롯을 배열하려는 경우에 유용합니다.
당신은 리본과 그리드에 랩하는 방법을 제어 할 수 있습니다 ncol
, nrow
,
as.table
와 dir
. ncol
및 nrow
제어 얼마나 많은 행과 열은 (만 세트 하나에 필요). as.table
패싯이 TRUE
오른쪽 하단에 가장 높은 값이 있는 테이블 ( ) 또는 FALSE
오른쪽 상단에 가장 높은 값이 있는 플롯 ( ) 처럼 배치되는지 여부를 제어합니다 . dir
컨트롤 랩의 방향 :
시간 orizontal 또는 V의 ertical.
패싯 그리드
From ?facet_grid
: facet_grid()
행 및 열 패싯 변수로 정의 된 패널 매트릭스를 형성합니다. 두 개의 불연속 변수가 있고 모든 변수 조합이 데이터에 존재할 때 가장 유용합니다.
행이나 열에 여러 변수를 “추가”하여 사용할 수 있습니다 (예 : a + b ~ c + d
.
facet grid()
space
와 동일한 값을 사용하는 이라는 추가 매개 변수 가 scales
있습니다.
# If scales and space are free, then the mapping between position
# and values in the data will be the same across all panels. This
# is particularly useful for categorical axes
ggplot(subset(mpg, manufacturer %in% c("audi", "honda", "toyota")) , aes(drv, model)) +
geom_point() +
facet_grid(manufacturer ~ ., scales = "free", space = "free") +
theme(strip.text.y = element_text(angle = 0))
(단순화) 예에서 가져온 ?facet_grid