티스토리 뷰

R

ggplot2()

코린이도이 2021. 6. 7. 12:21

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
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함