본문 바로가기

문돌이 존버/R 기초 스터디

R ggplot2 활용법 기초 따라잡기

반응형

오늘은 R의 ggplot 패키지를 활용하여 데이터를 시각화하는 방법을 살펴보겠습니다. 데이터는 R에 기본적으로 저장된 데이터프레임 mpg를 사용할 것입니다.

본격적인 시각화에 앞서 mpg가 어떤 데이터인지 간단히 훑을 필요가 있겠죠. 총 234개의 행과 11개의 열이 존재하며 자동차 정보에 대한 데이터라는 것을 확인하였습니다. 

시각화를 위해 x에 사용된 변수는 리터 단위 배기량이고, y에 사용된 변수는 고속도로 연비입니다. 또한, ggplot() 의 기본적인 형식은 아래와 같이 ggplot(data="")+ 를 먼저 입력한 뒤, geom_point() 를 통해 그려야 합니다. 쉽게 말해 ggplot() 으로 도화지를 깔고, geom_point() 로 물감을 칠한다고 생각하면 됩니다. 

geom_point() 는 점을 찍는 것이며 이외에도 다른 geom function 역시 존재합니다. 데이터 입력 요소 mapping() 은 항상 aes() 함수와 함께 사용되며 실제 도화지에 그릴 데이터를 정해주면 됩니다. 

 

library("ggplot2")
ggplot(data=mpg)+
geom_point(mapping=aes(x=displ, y=hwy))

색깔을 추가하고 싶어 변수 class를 파라미터로 설정했습니다. class 개수에 따라 색깔이 자동 적용됩니다.

ggplot(data=mpg)+
  geom_point(mapping=aes(x=displ, y=hwy, color=class))

색깔뿐만 아니라 shape 파라미터를 통해 점 모양도 결정할 수 있습니다. 역시나 변수 drv를 기준으로 했고 개수에 따라 서로 다른 점 모양이 나옵니다. 

ggplot(data=mpg)+
geom_point(mapping=aes(x=displ, y=hwy, shape=drv))

점 크기 역시 size 라는 파라미터로 조정할 수 있습니다. 

ggplot(data=mpg)+
geom_point(mapping=aes(x=displ, y=hwy, size=cyl))  

그래프에 표현할 수 있는 시각적 요소는 이렇게 다양하지만 한 번에 모든 것을 추가하는 것이 마냥 좋은 시각화 방법은 아닙니다. 아래처럼 color, shape, size 각 파라미터에 서로 다른 변수를 지정하면 그래프가 한 눈에 파악되지 않죠. 결국 보여줄 요소가 무엇인지 미리 결정한 다음 파라미터를 제한하여 그래프 정보를 효율적으로 보여줄 필요가 있는 것입니다. 

ggplot(data=mpg)+
  geom_point(mapping=aes(x=displ, y=hwy, color=class, shape=drv, size=cyl))

지금까지 다양한 시각화를 위해 aes() 함수 내부에 파라미터를 설정하였습니다. 하지만 아래와 같이 aes() 함수 밖에도 시각적 요소를 직접 "지정"할 수 있는데, 이때는 데이터프레임의 변수를 사용하지 못합니다. 특정 값으로 지정해줘야 하는 것이죠.

ggplot(data=mpg)+
  geom_point(mapping=aes(x=displ, y=hwy), color="blue", size=3, shape=21, fill="red", stroke=2)
  # stroke: shape가 21~25의 값으로 표현되는 점들의 테두리 선 두께 조절

만약 aes() 함수 안에서 파라미터를 특정 값으로 지정하면 어떻게 될까요? 아래는 분명 색깔을 초록색으로 지정해줬는데, 실제 그래프를 보면 빨간색 점이 찍혔습니다. 오류가 난 것일까요?

ggplot(data=mpg)+
  geom_point(mapping=aes(x=displ, y=hwy, color="green"))

aes() 내부에 특정값을 지정할 경우, 해당 함수는 무언가 "매핑"해야 한다고 생각합니다. 매핑은 변수와 연결되는 개념으로 특정 하나의 값과는 매핑이 성립되지 않죠. 따라서 "green"이라는 값을 가지는 새로운 변수를 스스로 만들고, 그 변수와 color를 매핑하기 때문에 색깔은 초록색이 아닌 기본 디폴트 값인 빨간색이 나오는 것입니다. 

다음에는 조금 더 심화된 ggplot2 활용법을 소개하도록 하겠습니다. 

728x90
반응형