본문 바로가기
R tidyverse/하루만에 끝내는 ggplot2

[ggplot2의 이해] 7. 값을 출력하는 막대그래프 (geom_col)

by 만다린망고 2023. 2. 8.
반응형

ggplot2 에서 제공하는 막대그래프는 두 종류가 있습니다. geom_bar 와 geom_col 입니다. 

geom_bar 는 하나의 범주형 변수를 이용하여 막대그래프를 그립니다. 예를들어 데이터가 (사과,사과,귤,바나나,바나나,바나나) 라면 세개의 막대가 그려집니다. 이때 세로축은 원소의 수가 됩니다. 

geom_col 은 범주형 독립변수와 연속형 종속변수를 이용하여 막대그래프를 그립니다. 이번 글에서는 geom_col 를 이용해서 막대그래프를 그려봅시다. 

 

1. 막대그래프 그리기

내장 데이터인 mpg를 이용하여 막대그래프를 그려보았습니다. mpg 는 자동차 데이터입니다. 총 11개의 변수가 있는데요. 독립변수로 class 를 선택하고, 종속변수로 hwy 를 선택하겠습니다. class 는 차의 타입이고, hwy 는 연료효율입니다. 연료효율을 전부 더한 결과를 출력하기 때문에 결과에 큰 의미는 없습니다. 

library(tidyverse)

ggplot()+
  geom_col(data=mpg,aes(x=class,y=hwy))+
  labs(title="geom_col",x='class',y='hwy')+ #제목, 축이름
  theme(title = element_text(size=20,face='bold'))+          #제목 서식
  theme(axis.title = element_text(size=10,face='bold'))+     #축서식
  theme(plot.title = element_text(hjust = 0.5))+              #제목 가운데 정렬
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))+ #x축 눈금 레이블 회전
  theme(legend.title = element_text(size=10,face='bold'))+   #범례 제목 서식
  theme(legend.text = element_text(size=10))+                #범례 이름 서식
  theme(legend.position = c(0.04,0.9))                        #범례 위치

 

 

2. 막대그래프 그리기 (독립변수 2개)

독립변수를 하나 더 늘려봅시다. fl(연료 종류)를 추가하겠습니다. fill 을 이용하면 됩니다. 

library(tidyverse)

ggplot()+
  geom_col(data=mpg,aes(x=class,y=hwy,fill=fl))+
  labs(title="geom_col",x='class',y='hwy')+ #제목, 축이름
  theme(title = element_text(size=20,face='bold'))+          #제목 서식
  theme(axis.title = element_text(size=10,face='bold'))+     #축서식
  theme(plot.title = element_text(hjust = 0.5))+              #제목 가운데 정렬
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))+ #x축 눈금 레이블 회전
  theme(legend.title = element_text(size=10,face='bold'))+   #범례 제목 서식
  theme(legend.text = element_text(size=10))+                #범례 이름 서식
  theme(legend.position = c(0.04,0.85))                        #범례 위치

 

 

position 옵션을 dodge 로 바꾸면 아래와 같은 형태로도 출력할 수 있습니다. 

 

library(tidyverse)

ggplot()+
  geom_col(data=mpg,aes(x=class,y=hwy,fill=fl),position='dodge')+
  labs(title="geom_col",x='class',y='hwy')+ #제목, 축이름
  theme(title = element_text(size=20,face='bold'))+          #제목 서식
  theme(axis.title = element_text(size=10,face='bold'))+     #축서식
  theme(plot.title = element_text(hjust = 0.5))+              #제목 가운데 정렬
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))+ #x축 눈금 레이블 회전
  theme(legend.title = element_text(size=10,face='bold'))+   #범례 제목 서식
  theme(legend.text = element_text(size=10))+                #범례 이름 서식
  theme(legend.position = c(0.04,0.85))                        #범례 위치

 

반응형

댓글