오늘은 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 활용법을 소개하도록 하겠습니다.
'문돌이 존버 > R 기초 스터디' 카테고리의 다른 글
R ggplot2 geom 객체 기초 따라잡기 (0) | 2020.11.12 |
---|---|
R ggplot2 Facet(ing) 함수 기초 따라잡기 (0) | 2020.11.11 |
R 데이터프레임(Dataframe) 생성 기초 따라잡기 1탄 (0) | 2020.11.10 |
R 문자열(string) 처리 기초 따라잡기 (0) | 2020.11.07 |
R 데이터 생성(벡터) 방법 기초 따라잡기 (0) | 2020.11.05 |