본문 바로가기

R프로그래밍,통계학/R까기2

ggplot2로 하는 정교한 시각화-막대그래프(geom_bar)

반응형

 

막대그래프는 범주별 빈도수를 나타낼 때 주로 쓰입니다.

저번에는 산점도로 해보았는데 이번에는 막대그래프로 데이터를 시각화 해보겠습니다.

 

1. 범주별 빈도수 나타내기

DF <- read.csv("example_studentlist.csv")
library(ggplot2)
library(ggthemes)
ggplot(DF,aes(x=bloodtype,fill=sex)) + geom_bar()
#table 함수를 사용하지 않아도 ggplot2가 알아서 도수를나타내줍니다.
#성별로 막대의 컬러가 나타납니다. 성별로 표시하면서 하나의 막대에 누적되서

 

-table 함수를 사용하지 않아도 ggplot2가 알아서 도수를 나타내줍니다.

-성별로 막대의 컬러가 나타납니다.  하나의 막대에 누적되어 나타납니다.

 

 

ggplot(DF,aes(x=bloodtype,fill=sex)) + geom_bar(position="dodge")
#dodge : 피하다

dodge 옵션을 사용해줌으로서 남,여 따로 나타내어줍니다.

 

 

 

 

 

ggplot(DF,aes(x=bloodtype,fill=sex)) + geom_bar(position="identity")

identity 옵션. 남, 여 도수를 겹쳐서 나타내어줍니다.

 

 

 

 

 

ggplot(DF,aes(x=bloodtype,fill=sex)) + geom_bar(position="fill",width=0.3)

전체를 체우는 그래프가 그려집니다. 남, 여 서로 어느정도 차지하고 있는지 확인하는데 용이합니다.  width로 너비도 조정 가능합니다.

 

 

 

2.범주별 '이미 정해진 수치값' 나타내기

 

막대그래프의 특성상 명목형 변수에 대한 도수를 나타내주는데 주로 쓰이는데,

만약에 y축의 값을 도수가 아니라 '이미 정해진값'으로 나타내고 싶은 경우에는 어떻게 하면 될까요 ?

그럴때는 stat= identity 옵션을 적용해주면 됩니다. 

 

 

 

mheightByblo <- tapply(DF$height, DF$bloodtype, mean) #키를 혈액형 별로 평균내라.
DF2 <- as.data.frame(mheightByblo)
DF2$bloodtype <- rownames(DF2)  # x:명목형(혈액형), y:수치형(평균키)로 데이터프레임을 만들어줍니다.

ggplot(DF2, aes(x=bloodtype, y=mheightByblo, fill=bloodtype)) +geom_bar(stat="identity") + scale_fill_brewer()

 

stat=identity 옵션으로 y축을 도수가 아닌 특정값(평균키)로 나타내 주었습니다.

 

 

반응형