티스토리 뷰
ggplot2()
- 데이터를 시각화하는데 있어서 간단한 설정만으로 다양한 그래픽 표현이 가능
- 하나의 데이터를 가지고도 여러 그래픽 표현이 가능
- ggplot2패키지를 이용하기 위해서는 아래와 같은 작업이 필요
- install.packages("ggplot2")
- library(ggplot2)
1. qplot()
- r에서 기본적으로 사용하는 plot()함수와 비슷한 구조를 가진 함수
- 형식: qplot(x,y,data=,color=,shape=,size=,alpha=,geom=,method=,formula=,facets=,xlim=,ylim=,xlab=,ylab=,main=,sub=)
-
> a<-c(167,170,173,178) > b<-c(55,65,77,60) > qplot(b,a,col="yellow")
- 결과
2. ggplot()
- ggplot(data,aes(x=x축 데이터,y=y축 데이터)) + geom 원하는 그래프()
- 구성
- data: 그래픽을 원하는 데이터 집합
- aes(): 데이터 각 레코드를 그래픽 요소에 매핑하는 작업(미적 요소 매핑)
- geom(): 각 축에 숫자형 데이터를 입력받아 실제로 시각화 하기 위해 좌표계에 표시하는 작업(기하객체(geometric object))으로 표시되는 형태에 따라 점(point), 선(line), 다각형(polygon) 등 많은 객체가 존재
- stat: 해당 데이터 값에 대한 통계적 처리방법
-
#기본 예1 > data<-data.frame(mat=c(55,75,70,65,90,100,70,85),eng=c(65,100,45,50,75,90,90,65),avg=c(53,70,83,70,93,95,75,80),name=c('a','b','c','d','e','f','g','h')) > ggplot(data,aes(x=avg,y=mat))+geom_line() #기본 예2 > datainfo<-read.csv("C:\\Rs\\highwaybus09.csv",sep=",",header=TRUE) > datainfo > ggplot(datainfo,aes(x=총운행횟수,y=이용율))+geom_point(aes(colour=선별),size=거리))
- 결과
3. 레이어 개념을 이용하여 유연한 시각화 작업
-
> plot.new() > ggplot(data,aes(x=avg,y=mat))+geom_line(colour="red")+geom_point(aes(colour=name))
- 결과
-
> plot.new() > ggplot(data,aes(x=mat,y=avg))+geom_line(colour="red")+geom_point()+geom_line(aes(x=eng,y=avg),colour="green")+geom_point(aes(x=eng,y=avg),colour="green") #레이어를 통해 추가된 미적매핑은 또 다른 레이어로 상속되지 않음
- 결과
4. 막대그래프: geom_bar()
- geom_bar()의 stat요소는 기본적으로 stat_bin()즉, 표시하려는 항목의 개수를 카운트하여 빈도를 표시하도록 설정되어 있다. 따라서, 항목의 계산을 위해서는 stat="identity"로 세팅한다.
-
> datainfo<-read.csv("C:\\Rs\\highwaybus09.csv",sep=",",header=TRUE) > ggplot(datainfo,aes(x=선별,y=총이용인원))+geom_bar(stat="identity",fill="orange")
- 결과
5. 그룹별 평균을 계산하여 막대그래프로 표시
-
> datainfo<-read.csv("C:\\Rs\\highwaybus09.csv",sep=",",header=TRUE) > meandf<-as.data.frame(with(datainfo,tapply(이용율,선별,mean,na.rm=TRUE))) > meandf$선<-rownames(meandf) > names(meandf)<-c("이용율","선") 이용율 선 88선 44.6667 88선 경부선 48.204 경부선 경인선 54.9160 경인선 구마선 46.9500 구마선 남해선 39.6952 남해선 > ggplot(meandf,aes(선,이용율))+geom_bar(stat="identity",aes(color=선))
- 결과
6. 누적막대그래프 작업
-
> meandf1<-as.data.frame(with(datainfo,aggregate(이용율,list(선별=선별,차종=차종),mean,na.rm=TRUE))) > meandf1$이용율<-rownames(meandf1) > names(meandf1)<-c("선별","차종","이용율) > ggplot(meandf1,aes(선별,이용율))+geom_bar(stat="identity",aes(fill=차종))
- 결과
7. position요소를 이용하여 여러 형태의 막대형 그래프 작업
-
#누적 그래프 옆으로 stack > ggplot(meandf1,aes(선별,이용율,fill=차종))+geom_bar(stat="identity",position="dodge") #100%기준 누적막대 > ggplot(meandf1,aes(선별,이용율,fill=차종))+geom_bar(stat="identity",position="fill")
- 결과
'R' 카테고리의 다른 글
plot종류 (0) | 2021.06.07 |
---|---|
plot함수 (0) | 2021.06.07 |
외부파일 읽어오기 (0) | 2021.06.06 |
함수(function) (0) | 2021.06.06 |
조건제어문(if, ifelse, for, while, repeat) (0) | 2021.06.06 |