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

[ggplot2의 이해] 6. 원소 수를 출력하는 막대그래프 (geom_bar)

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

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

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

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

 

1. 막대그래프 그리기

내장 데이터인 mpg를 이용하여 막대그래프를 그려보았습니다. mpg 는 자동차 데이터입니다. 총 11개의 독립변수가 있는데요. 이들 중 , manufacturer(제조사) 를 사용하겠습니다. 그래프를 그리면 제조사 별로 차가 몇대씩 데이터에 포함되어 있는지 알 수 있습니다. 

library(tidyverse)

ggplot()+
  geom_bar(data=mpg,aes(x=manufacturer))+
  labs(title="geom_bar",x='manufacturer',y='count')+ #제목, 축이름
  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축 눈금 레이블 회전

 

 

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

'제조사'와 'drive train 종류'라는 두개의 독립변수로 막대그래프를 그려봅시다.  위에서 그린 그래프에서 fill=drv 를 추가하면 됩니다. 

library(tidyverse)

ggplot()+
  geom_bar(data=mpg,aes(x=manufacturer,fill=drv))+
  labs(title="geom_bar",x='manufacturer',y='count')+ #제목, 축이름
  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.96,0.9))                        #범례 위치

 

 

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

 

library(tidyverse)

ggplot()+
  geom_bar(data=mpg,aes(x=manufacturer,fill=drv),position='dodge')+
  labs(title="geom_bar",x='manufacturer',y='count')+ #제목, 축이름
  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))                        #범례 위치

 

반응형

댓글