티스토리 뷰

방송대/R 컴퓨팅

9강. R 그래픽스I (1)

monimoni 2025. 4. 17. 20:27

1. 단변수 범주형 자료

  • MASS 패키지의 Cars93 자료를 불러서 자동차 타입에 따른 빈도를 이용하여 막대그래프 그리기
    • library(MASS)
    head(Cars93) - head는 상위의 몇 개의 데이터만 불러오게 한다.
  • Cars93 자료는 1993년 미국에서 판매되는 93종의 자동차에 대한 여러 정보를 포함

2. 기본막대그림 ( barplot )

  • barplot은 대표적인 단변수 범주형 데이터를 표현할 수 있는 도구
  • 사용 예시
# with 함수를 통해 Cars93내의 Type 타입의 데이터가 나타나는 빈도수를 테이블로 구성
tab <- with(Cars93, table(Type))

barplot(tab,
        main = "Type of Car", # 기본 막대 그림의 주요 라벨
        xlab = "Type", # X축 라벨
        ylab = "Number of Car", # Y축 라벨
        col = 1:6, # 막대 그림 색상 지정
        legend = c("Compact", "Large", "Midsize", "Small", "Sporty", "Van"), # 범례
        names.arg = c("Compact", "Large", "Midsize", "Small", "Sporty", "Van")) # 범례 라벨
  • x축: 자동차 유형( Type )
  • y축: 각 자동차 유형의 빈도수( Number of Car )
  • col=1:6: 막대의 색상을 6가지로 지정
  • legend: 오른쪽 범례 추가
  • names.arg: x축에 표시될 카테고리 이름 지정

3. Side형 막대그림

tab <- with(Cars93, xtabs(~ Type + AirBags))

barplot(tab,
        col = rainbow(6),
        legend = c('Compact', 'Large', 'Midsize', 'Small', 'Sporty', 'Van'),
        xlab = "AirBags",
        ylab = "Number of Cars",
        beside = TRUE)
  • xtabs()
    • 교차표 생성
    • xtabs(~ Type + AirBags)
      • Cars93 데이터셋에서 Type과 AirBags 두 개의 범주형 변수 간 교차빈도표( 분할표 ) 생성
      • 범주형 변수 2개 : Type(자동차 유형), AirBags(에어백 타입)
  • x축 : 에어백 유형
  • y축 : 해당 에어백을 장착한 자동차 수
  • beside=TRUE
    • 누적 막대가 아닌, 옆으로 나란히 정렬된 막대그래프
    • 기본막대그림에서 beside = TRUE가 추가
  • col=rainbow(6) : 6개의 범주(자동차 유형)에 대해 다양한 색 지정
  • legend : 범례 표시로 색상과 자동차 유형 매칭

4. Stacked 막대그림 – 1

barplot(tab,
        col = rainbow(6),
        legend = c('Compact', 'Large', 'Midsize', 'Small', 'Sporty', 'Van'),
        xlab = "AirBags",
        ylab = "Number of Cars",
        beside = FALSE)
  • beside = FALSE
    • 막대들을 누적( stacked ) 형태로 표시

5. Stacked 막대그림 – 2 ( 주석 위치 변경 )

barplot(tab,
        col = rainbow(6),
        legend = c('Compact', 'Large', 'Midsize', 'Small', 'Sporty', 'Van'),
        xlim = c(0, ncol(tab) + 2),
        xlab = "AirBags",
        ylab = "Number of Cars",
        args.legend = list(x = ncol(tab) + 2, 
                           y = max(colSums(tab)),
                           bty = "n"))
  • xlim = c(0, ncol(tab) + 2)
    • x축 범위 설정, 범례 공간 확보
  • args.legend = list(...)
    • 범례 위치 수동 조정
  • x = ncol(tab) + 2
    • 범례를 막대들 오른쪽에 배치
  • y = max(colSums(tab))
    • 범례를 y축 위쪽 끝에 위치
  • bty = "n”
    • 범례 박스 테두리 제거 (n = none)

6. 파이차트 (Pie Chart) – 1

tab <- with(Cars93, table(Type))
pie(tab, col = topo.colors(6))
  • with(Cars93, table(Type))
    • Cars93 데이터셋에서 자동차 유형(Type)의 빈도수 테이블 생성
  • pie(tab)
    • 범주형 데이터(tab)를 파이차트로 시각화
  • col = topo.colors(6)
    • 6가지 색상의 톱그래픽( topographic ) 계열 컬러 사용 (지형도 느낌의 색상)

7. 파이차트 (Pie Chart) – 2

names(tab) <- c("COMPACT", "LARGE", "MIDSIZE", "SMALL", "SPORTY", "VAN")
pie(tab, col = topo.colors(6))
  • names(tab) <- …
    • 빈도 테이블( tab )의 범주 이름( label )을 사용자 지정한 문자로 바꿈
  • pie(tab, col = topo.colors(6))
    • 변경된 이름으로 파이차트 생성, 색상은 topo.colors 계열 사용

8. 히스토그램 ( Histogram )

with(Cars93, hist(MPG.highway, 
                  xlab = 'MPG in Highway', 
                  main = 'MPG in Highway'))
  • 오른쪽으로 치우친 ( skewed to the right ) 분포
  • with(Cars93, ...)
    • Cars93 데이터셋 안의 열을 직접 사용할 수 있게 함
  • hist(MPG.highway)
    • MPG.highway 변수의 히스토그램 생성
      • MPG.highway는 연속형 자료여야 함
  • xlab( x축 레이블 )
    • MPG in Highway
  • main( 그래프 제목 )
    • MPG in Highway

9. 확률밀도함수 그림( Density Plot ) 

  • vcd 패키지에 있는 Arthritis 자료를 이용한 확률밀도함수 그림
    • > library(vcd)
      > summary(Arthritis)
      > head(Arthritis)
  • density 함수의 이용
    • with(Arthritis,plot(density(Age)))
      • Age(나이) 변수에 대한 확률 밀도 함수를 시각화
    • 특징
      • 히스토그램보다 매끄러운 곡선 형태
      • 데이터 분포의 전반적인 모양을 시각적으로 표현
      • 연속형 변수 분석에 적합
  • 확률밀도함수 값을 이전에 그렸던 히스토그램에 overlay 시키기
    • 옵션을 probability=T로 지정
      • > with(Cars93, hist(MPG.highway, xlab='MPG in Highway', main='MPG in Highway', probability=T))
        > with(Cars93, lines(density(MPG.highway), col='red', lwd=2))
    • probability = T 옵션 사용
      • 히스토그램의 y축을 도수(count) 가 아닌 확률밀도(probability) 로 표시
      • 이를 통해 밀도 함수(density curve) 와 스케일이 일치되어 겹쳐 그릴 수 있음
    • lines() 함수로 덧그리기
      • lines(density(MPG.highway))는 해당 데이터의 확률밀도함수를 빨간 선으로 덧그림
      • col = 'red'은 색상, lwd = 2는 선 굵기 설정입니다.
    • R Console 창에서 colors()를 입력하면 657 종류의 색 지정 옵션을 확인할 수 있음

10. Quantile-Quantile (QQ) Plot

  • 특정 분포를 따르는지 아닌지 Q-Q 그림을 통해서 살펴볼 수 있음
  • 자료의 특정 분포를 가정했을 때 얻은 백분위수 값과 샘플 백분위수 값을 x=y 축에 도시하여 y=x 직선 상에 자료가 위치하고 있으면 자료가 가정한 특정분포를 따른다고 해석
  • x축
    • 가정한 분포(예: 정규분포)의 이론적 분위수
  • y축
    • 실제 샘플 데이터의 분위수
> with(Cars93,qqnorm(Turn.circle,main='Q-Q plot of Turn.circle
\n (U-turn space, feet)'))
> with(Cars93,qqline(Turn.circle,col='orange',lwd=2))
  • qqnorm()
    • Turn.circle 데이터의 분위수를 이론적 정규분포의 분위수와 비교하는 Q–Q plot을 그림
  • qqline()
    • Q–Q plot 위에 기준 직선(y = x)을 그려줌
    • col='orange'는 색상 지정, lwd=2는 선 굵기
728x90

'방송대 > R 컴퓨팅' 카테고리의 다른 글

8강. R 함수 만들기  (0) 2025.04.11
7강. R 프로그래밍의 기초 (2)  (0) 2025.04.11
6강. R 프로그래밍의 기초 (1)  (0) 2025.04.10
5강. 데이터 구조 (2)  (0) 2025.03.23
4강. 데이터 구조 (1)  (0) 2025.03.15
댓글
«   2025/07   »
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 29 30 31
최근에 올라온 글
Total
Today
Yesterday
공지사항