컴퓨터/R

R - 시각화 ④ ggplot 라이브러리 사용(막대그래프)

해피밀세트 2020. 4. 22. 23:49

 

 

 

# ggplot 라이브러리 설치 및 임포트

install.packages("ggplot2")

library(ggplot2)

 

# 실행 결과 새창에 띄우기

x11()

 

 

1. 막대그래프

 

1.1 ggplot() : 그래프 배경 그리기

# 파일 불러오기 및 변수에 저장

df <- read.csv("C:/data/exam.csv",header=T,
                     stringsAsFactors = F)

x <- df[df$subject=="SQL",]

# 일반 parblot을 사용한 막대그래프 그리기

barplot(x$grade,names.arg=x$name)

# ggplot을 사용한 그래프 배경 생성

ggplot(x,aes(x=name,y=grade))

 

1.2 geom_bar() : 막대그래프 그리기

# geom_bar() : 막대그래프 그리기
# stat="identity" : 
y축에 명시한 값을 기준으로 그래프로 표현

ggplot(x,aes(x=name,y=grade))+

  geom_bar(stat="identity")

# bar에 색깔 채우기

ggplot(x,aes(x=name,y=grade))+

  geom_bar(stat="identity",fill="gold")

# colour : 테두리선

ggplot(x,aes(x=name,y=grade))+ 
  geom_bar(stat="identity",fill="gold",colour="black")

 

1.3 theme() : 그래프 테마 설정 변경

# theme(axis.text.x= ) : x축의 테마 변경
# element_text(angle= ) : 텍스트 기울기 변경

ggplot(x,aes(x=name,y=grade))+
  geom_bar(stat="identity",fill="gold",colour="black")+
  theme(axis.text.x=element_text(angle=45))

# element_text(colour= ) : 텍스트 색깔 변경

ggplot(x,aes(x=name,y=grade))+
  geom_bar(stat="identity",fill="gold",colour="black")+
  theme(axis.text.x=element_text(angle=45,colour="blue"))

# element_text(size= ) : 텍스트 크기 변경

ggplot(x,aes(x=name,y=grade))+
  geom_bar(stat="identity",fill="gold",colour="black")+
  theme(axis.text.x=element_text(angle=45,colour="blue",

                                           size=7))

# element_text(hjust= ) : 텍스트 정렬 위치

ggplot(x,aes(x=name,y=grade))+
  geom_bar(stat="identity",fill="gold",colour="black")+
  theme(axis.text.x=element_text(angle=45,colour="blue",
                                           size=7,hjust=1))

# element_text(vjust= ) : 표와 텍스트 사이 거리 조절 

ggplot(x,aes(x=name,y=grade))+
  geom_bar(stat="identity",fill="gold",colour="black")+
  theme(axis.text.x=element_text(angle=45,colour="blue",
                                           size=7,hjust=1,vjust=1))

# theme(axis.text.y= ) : y축 테마 변경

ggplot(x,aes(x=name,y=grade))+
  geom_bar(stat="identity",fill="gold",colour="black")+
  theme(axis.text.x=element_text(angle=45,colour="blue",
                                 size=7,hjust=1,vjust=1))+
  theme(axis.text.y=element_text(size=rel(1),colour="red",
                                           vjust=0))

 

 

1.4 축 정보 수정

# 요일별 입사한 인원수 데이터

library(plyr)

week_cn <- count(emp,"wday(HIRE_DATE,week_start=1)")

week_cn

colnames(week_cn) <- c("week","cn")

# factor 사용하지 않아서 x 값이 듬성듬성나옴

ggplot(week_cn,aes(x=week,y=cn,fill=week))+

  geom_bar(stat="identity")

# scale_x_continuous() : x축의 표시
# factor 넣으면 오류남

ggplot(week_cn,aes(x=week,y=cn,fill=week))+

  geom_bar(stat="identity")+

  scale_x_continuous(breaks=seq(1,7,1))

# x축의 정보 바꿈
# 범례는 안바뀜

ggplot(week_cn,aes(x=week,y=cn,fill=week))+

  geom_bar(stat="identity")+

  scale_x_continuous(breaks=seq(1,7,1),

                     labels=c("월","화","수","목","금","토","일"))

# 범례 바꾸기

x11()

ggplot(week_cn,aes(x=week,y=cn,fill=week))+

  geom_bar(stat="identity")+

  scale_x_continuous(breaks=seq(1,7,1),

                     labels=c("월","화","수","목","금","토","일"))+

  scale_fill_continuous(name="요일",

                        labels=c("월","화","수","목","금","토","일"))

 

 

 

 

2. 스택 막대그래프

 

2.1 geom_bar() : 막대그래프 그리기

# 파일 불러오기 및 변수에 저장

df <- read.csv("C:/data/exam.csv",header=T,
               stringsAsFactors = F)

# ggplot(fill= ) : 이름을 기준으로 과목들의 점수 측정

ggplot(df,aes(x=name,y=grade,fill=subject))+
         geom_bar(stat="identity")

 

2.2 geom_text : 그래프에 텍스트 넣기

# geom_text(aes( )) : 그래프 안에 텍스트 넣기

ggplot(df,aes(x=name,y=grade,fill=subject))+ 
  geom_bar(stat="identity")+ 
  geom_text(aes(y=grade,label=grade))

# geom_text(position= ) : 글자 위치 지정

ggplot(df,aes(x=name,y=grade,fill=subject))+ 
  geom_bar(stat="identity")+ 
  geom_text(aes(y=grade,label=grade), 
                position = position_stack(vjust=0.5))

# geom_text(col= ) : 글자 색깔 지정
# geom_text(size= ) : 글자 크기 조절

ggplot(df,aes(x=name,y=grade,fill=subject))+ 
  geom_bar(stat="identity")+ 
  geom_text(aes(y=grade,label=grade), 
            position = position_stack(vjust=0.5), 
            col="white",size=3)

 

2.3 geom_col(position="stack") : 스택형 막대그래프 그리기

# geom_col(position= ) : 그래프 형태 지정

x11()
ggplot(df,aes(x=name,y=grade,group=subject))+
  geom_col(aes(fill=subject),position="stack")

# geom_text() : 그래프 안에 텍스트 넣기

ggplot(df,aes(x=name,y=grade,group=subject))+
  geom_col(aes(fill=subject),position="stack")+
  geom_text(aes(label=grade),position=position_stack(vjust=0.5))

ggplot(df,aes(x=name,y=grade,group=subject))+
  geom_col(aes(fill=subject),position="stack")+
  geom_text(aes(label=grade),
                position=position_stack(vjust=0.5))+
  theme(axis.text.x=element_text(angle=45,
                                          colour="blue",size=10,
                                          hjust=1,vjust=1))

 

 

 

3. 그룹형 막대그래프

 

3.1 geom_col(position="dodge") : 그룹형 막대그래프 그리기 

# 그룹형 막대그래프 그리기

ggplot(df,aes(x=name,y=grade,group=subject))+
  geom_col(aes(fill=subject),position="dodge")+
  geom_text(aes(label=grade),
                position=position_dodge(0.9))+
  theme(axis.text.x=element_text(angle=45,colour="blue",
                                          size=10,hjust=1,vjust=1))

# x축, y축 바꿔서 출력

x11()
ggplot(df,aes(x=subject,y=grade,group=name))+
  geom_col(aes(fill=name),position="dodge")+
  geom_text(aes(label=grade),position=position_dodge(0.9))

반응형