본문 바로가기

데이터 다루기/데이터 시각화

[R을 활용한 시각화] 1. ggplot2 (Barplot) (1)

728x90
반응형

이번 포스팅에서는 ggplot2 패키지를 활용해서 다양한 Barplot을 그려보도록 하겠습니다.

1. 실습 데이터 정의

df <- data.frame(Name = c("JW", "HJ", "SY"), Weight = c(57, 80, 42)) 
head(df)

<< Result >>
	Name Weight 
   1 JW 57 
   2 HJ 80 
   3 SY 42

우선 단순한 데이터를 정의 하였습니다.

2. 패키지 불러오기

library(ggplot2)

library 함수를 통해 먼저 ggplot2 패키지를 불러왔습니다.

3. Bargraph 꾸미기

# Basic barplot 
p<-ggplot(data=df, aes(x=Name, y=Weight)) + geom_bar(stat="identity") 
p

먼저 아주 단순한 Barplot을 그려보았습니다.

여기서 stat은 Barplot을 그리는 통계값을 말하며, 이 데이터의 경우 고유 값이 크기를 나타내므로 "identity"를 사용합니다. 만약에 y 값이 A, B, C 처럼 범주이고, 데이터에 A가 3개, B가 4개, C가 2개를 Barplot으로 그리고자 할 때, "count"로 바꿔주면 됩니다.

(1) 회전

# Horizontal bar plot 
p + coord_flip()

 

coord_flip 함수를 통해 Barplot을 옆으로 눕힐수도 있습니다.

전체적으로 볼때, Visual 측면에서 별로네요...

한번 업그레이드 해보도록 하겠습니다.

(2) 두께 조절

# Change the width of bars 
ggplot(data=df, aes(x=Name, y=Weight)) + geom_bar(stat="identity", width=0.5)

우선 width 옵션을 통해서, Bargraph의 크기를 조절할 수 있습니다.

(3) 색상 입히기

# Minimal theme + blue fill color
p<-ggplot(data=df, aes(x=Name, y=Weight)) + geom_bar(stat="identity", width=0.5, fill="steelblue")+ theme_minimal() 
p

추가적으로 fill 옵션을 통해, bargraph의 색깔을 변경할 수 있고, theme_minimal 함수를 통해 배경을 최소화 시킬 수 있어요.

(4) Bar 위치 조정

# x order change 
p + scale_x_discrete(limits=c("JW", "HJ", "SY"))

그리고 위에 그래프를 보시면, 맨 처음 데이터의 순서와는 다르게 크기 순서대로 정렬이 되있죠??

이를 원하는 순서대로 바꾸기 위해서, scale_x_discrete 함수를 사용하였습니다.

(5) 값 라벨링

# Outside bars 
ggplot(data=df, aes(x=Name, y=Weight)) + geom_bar(stat="identity", fill="steelblue")+ geom_text(aes(label=Weight), vjust=-0.8, size=3.5)+ theme_minimal()

Bargraph 위쪽에 Weight 값을 labeling할 수 있습니다.

이 때, vjust > 0 이면 Bargraph 안쪽에 label을 맵핑할 수 있습니다.

# Inside bars 
ggplot(data=df, aes(x=Name, y=Weight)) + geom_bar(stat="identity", fill="steelblue")+ geom_text(aes(label=Weight), vjust=1.6, color="white", size=8)+ theme_minimal()

 

이렇게 vjust를 조절해서 Weight를 Bar 안쪽에 집어넣을수도 있습니다.

(6) 색깔을 마음대로

# Change barplot fill colors by groups 
p<-ggplot(df, aes(x=Name, y=Weight, fill=Name)) + geom_bar(stat="identity", width=0.5)+theme_minimal() 
p

fill 인자에 group 변수를 넣어주시면 색깔은 마음대로 변경할 수 있습니다.

색깔을 사전에 정해줄 수도 있습니다.

아래에 3가지 방법을 추가해보았습니다.

# Use custom color palettes
p+scale_fill_manual(values=c("#999999", "#E69F00", "#56B4E9")) 

# use brewer color palettes 
p+scale_fill_brewer(palette="Dark2") 

# Use grey scale 
p + scale_fill_grey()

(7) 범주 위치 변경

p + theme(legend.position="top") 
p + theme(legend.position="bottom") 

# Remove legend 
p + theme(legend.position="none")

theme 함수의 legend.position 인자에 위치를 넣어주시면, 해당 위치에 범주가 배치됩니다.

반응형