Study/R

[R4DS] 1장 데이터 시각화 - 03 facet

truthyun 2021. 11. 27. 15:55
728x90
반응형

1.5 facet

facet_wrap()
  • 변수를 추가하는 방법으로 심미성을 이용하는 방법 외에 플롯을 면분할(facet)로 나누는 것으로, 이는 범주형 변수에 특히 유용하다.
  • 하나의 변수에 대해 면분할 하기 위해서는 facet_wrap() 을 이용한다.
  • facet_wrap() 의 첫 번째 인수로는 ~와 뒤에 변수 이름이 나오는 공식이어야 하며,
  • facet_wrap() 에 전달하는 변수는 이산형이어야 한다.
ggplot(data = mpg)+
	geom_point(mapping = aes(x = displ, y = hwy)) +
	facet_wrap(~ class, nrow = 2)

 

facet_grid()
  • 플롯을 두 변수 조합으로 면분할하기 위해서는 facet_wrap() 를 플롯 호출에 추가하면 된다.
    facet_grid() 의 첫 번째 인수도 정형화되어 있다.
ggplot(data = mpg) +
	geom_point(mapping = aes(x = displ, y = hwy)) +
	facet_grid(drv ~ cyl)

  • 열이나 행으로 면분할하고 싶지 않으면 변수 이름 대신 . 을 이용한다
ggplot(data = mpg) +
	geom_point(mapping = aes(x = displ, y = hwy)) +
	facet_grid(. ~ cyl)

 

연습문제

1. 연속형 변수로 면분할하면 어떻게 되는가?

  • 연속하는 값들 마다 면 분할된다. 따라서 연속형변수로 면분할 하는것은 의미가 없다


2. facet_grid(drv ~ cyl) 로 만든 플롯에 있는 빈 셀들은 무엇을 의미하는가?다음 플롯과 어떻게 연관되는가?

ggplot(data = mpg) +
	geom_point(mapping = aes(x = drv, y = cyl))
  • 해당 drv값, cyl 값을 만족하는 데이터가 없음을 의미한다.
  • drv, cyl 모두 명목형 변수이기 때문에 위 코드의 그래프를 그리면 점이 찍히지 않은 곳이 있다. 그 점이 비어있는 이유는 데이터가 없기 때문이다.

3. 다음의 코드는 어떤 플롯을 만드는가? . 은 어떤 역할을 하는가?

ggplot(data = mpg) +
	geom_point(mapping = aes(x = displ, y = hwy)) +
	facet_grid(drv ~ .)
ggplot(data = mpg) +
	geom_point(mapping = aes(x = displ, y = hwy)) +
	facet_grid(. ~ cyl)
  • 첫 번째 코드는 drv 변수를 행 기준으로 면분할 하고, 두 번째 코드는 cyl 변수를 열 기준으로 면분할 한다. 여기서 . 는 행 또는 열 분할만을 할 때 사용한다.

4. 이 절의 면분할된 첫 번째 플롯을 살펴보라

ggplot(data = mpg) +
	geom_point(mapping = aes(x = displ, y = hwy)) +
	facet_wrap(~ class, nrow = 2)

색상 심미성을 쓰지 않고 면분할 하면 어떤 이점이 있는가? 단점은 무엇인가? 데이터가 더 크다면 이 균형을 어떻게 바뀌겠는가?


5. ?facet_wrap 을 읽어라. nrow 과 ncol 의 역할은 무엇인가?개별 패널의 배치를 조정할 수 있는 다른 방법은 무엇인가?facet_grid 에는 nrow , ncol 인수가 왜 없는가?

facet_wrap() wraps a 1d sequence of panels into 2d. This is generally a better use of screen space than facet_grid() because most displays are roughly rectangular.
  • facet_wrap()은 1d 패널 시퀀스를 2d로 래핑한다. 대부분의 디스플레이가 대략 직사각형이기 때문에 일반적으로 facet_grid()보다 화면 공간을 더 잘 사용한다.
  • ncol과 nrow는 분할 할 면의 열, 행의 수를 의미한다.

6. facet_grid() 를 사용할 때, 대개의 경우 고유 수준이 더 많은 변수를 열로 두어야 한다. 왜인가?

  • 그래프는 주로 세로로 길게 나타낸다. 따라서 고유 수준이 더 많은 변수를 열로 두어야 행의 수가 줄어들어 그래프가 세로로 길게 나타낼 수 있다.

 

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형