Rstudio(10) ggplot2 패키지

hyukstory 혁스토리·2020년 8월 22일
0

Rstudio

목록 보기
13/16

< 10 > ggplot2 패키지

qplot() : 전처리 단계 데이터 확인용 문접, 간단 기능 단순

ggplot() : 최종 보고용. 색, 크기, 폰트 등 세부 조작 가능

install.packages("ggplot2")
library(ggplot2)

10-0) ggplot(데이터 세트, aes(데이터 속성))

그래프를 표현하는 좌표를 그리기 위해 판을 짜는 함수

str(airquality)
ggplot(airquality, aes(x = Day, y = Temp)) # x축은 Day열로, Y축은 Temp열로 맵핑

ggplot(airquality, aes(x = reorder(Day, -Month), y = Temp))

#### reorder : x축 재배치 (- : 오름차순, + : 내림차순) ####
#### 월 기준으로 일을 내림차순으로 재배치

#### x축과 y축 범위 지정 ####
ggplot(airquality, aes(x = reorder(Day, -Month), y = Temp)) + 
  xlim(1, 15) + 
  ylim(5, 25)

10-1) 산점도 및 꺽은선 그래프

geom_point() : 산점도

ggplot(airquality, aes(x = Day, y = Temp)) + geom_point() # 산점도 그리기

ggplot(airquality, aes(x = Day, y = Temp)) + geom_point(size = 3, color = "red") #크기 3, 색상 빨강으로 

geom_line() : 꺾은선 그래프 그리기

ggplot(airquality, aes(x = Day, y = Temp)) + geom_line()

그래프 겹쳐 그리기

ggplot(airquality, aes(x = Day, y = Temp)) + 
  geom_line(color = "green") + 
  geom_point(size = 3, color = "red")

산점도나 꺽은선 그래프는 두 변수간의 관계 파악에 용이

10-2) 막대그래프, 원그래프 상자그림, 히스토그램

geom_bar() : 막대그래프

- 하나의 변수에서 각 값의 빈도 파악에 사용 (x축만 지정)
ggplot(mtcars, aes(x = cyl)) + geom_bar(width = 0.5) # mtcars에서 cyl 종류별 빈도수 확인

ggplot(mtcars, aes(x = factor(cyl))) + 
  geom_bar(width = 0.5) # 빈 범주 제외하고 cyl 종류별 빈도수 확인

- 누적 막대그래프

ggplot(mtcars, aes(x = factor(cyl))) + 
  geom_bar(aes(fill = factor(gear))) # cyl 종류별 gear 빈도 누적 막대그래프 (누적 막대그래프 하려면 factor함수 필수)

- 선버스트 차트 그리기

ggplot(mtcars, aes(x = factor(cyl))) +  # cyl열을 x축으로 지정
  geom_bar(aes(fill = factor(gear))) +  # cyl 종류별 gear 빈도 파악
  coord_polar()                         # 선버스트 차트로 변환

- 원그래프 그리기

ggplot(mtcars, aes(x = factor(cyl))) +  # cyl열을 x축으로 지정
  geom_bar(aes(fill = factor(gear))) +  # cyl 종류별 gear 빈도 파악
  coord_polar(theta = "y")              # 원그래프로 변환

geom_boxplot() : 상자그림

ggplot(airquality, aes(x = Day, y = Temp, group = Month)) +
  geom_boxplot() # airquality 에서 Month 열을 그룹지어, 날짜별 온도 상자 그림을 그림

geom_histogram() : 히스토그램 (도수 분포를 기둥 모양 그래프로 표현)

ggplot(airquality, aes(Temp)) +
  geom_histogram(bindwidth = 1)

10-3) 직선 그리기

geom_abline() : 예측선 그리기

str(economics)
ggplot(economics, aes(x = date, y = psavert)) +
  geom_line() +
  geom_abline(intercept = 12.18671, slope = -0.00054444) #intercept : y절편 , slope : 기울기

절편과 기울기 구하기

lm(psavert ~ date, data=economics)

geom_hline() : 평균선 (평행선0)

ggplot(economics, aes(x = date, y = psavert)) +
  geom_line() +
  geom_hline(yintercept = mean(economics$psavert))

geom_vline() : 수직선

library(dplyr)
x_inter <- filter(economics, psavert == min(economics$psavert))$date

ggplot(economics, aes(x = date, y = psavert)) +  #  x축을 date, y축을 psavert로 맵핑
  geom_line() +                                  # 꺽은선그래프 그리기
  geom_vline(xintercept = x_inter)               # x_inter 변수 값으로 수직선 그리기

10-4) 텍스트 입력 및 도형 그리기

geom_text() : 텍스트 입력

그래프 위에 직접 표현

geom_text(aes(label = 라벨명, vjust = 세로 위치, hjust = 가로위치)

ggplot(airquality, aes(x = Day, y = Temp)) +
  geom_point() +
  geom_text(aes(label = Temp, vjust = 0, hjust = 0))

annotate() : 도형 및 화살표

annotate("모양", xmin = x축 시작, xmax = x축 끝, ymin = y축 시작, ymax = y축 끝, alpha = 투명도 , fill = 색상)


ggplot(mtcars, aes(x = wt, y = mpg)) +   # x축을 wt, y축을 mpg로 맵핑
  geom_point() +                          # 산점도 그리기
  annotate("rect", xmin = 3, xmax = 4, ymin = 12, ymax = 21, 
           alpha = 0.5, fill = "skyblue")

산점도에 사각형, 화살표, 레이블 추가

ggplot(mtcars, aes(x = wt, y = mpg)) +   # x축을 wt, y축을 mpg로 맵핑
  geom_point() +                          # 산점도 그리기
  annotate("rect", xmin = 3, xmax = 4, ymin = 12, ymax = 21, 
           alpha = 0.5, fill = "skyblue") +
  annotate("segment", x = 2.5, xend = 3.7, y = 10, yend = 21, color = 'red', arrow = arrow()) +
  annotate("text", x = 4, y = 22, label = "important")

10-5) 그래프 및 축 제목

labs(x = "x축 이름", y = "y축 이름", title = "그래프 제목")

ggplot(mtcars, aes(x = gear)) +
  geom_bar() +
  labs( x = "기어수", y = "자동차수", title = "변속기 기어별 자동차수") +
  theme_gray() # 테마 적용


10-6) ggsave() : ggplot 그래프 저장

ggplot(data = midwest, aes(poptotal, popasian), options(scipen = 99)) + 
  geom_point() + 
  xlim(0,500000) + 
  ylim(0,10000)
ggsave("c:/TEMP/Rstudy/4week/rggplot.png") # 저장하려면 위 식과 한번에 같이 돌림

지수승 표현 해제 : options(scipen = 99)

지수승 표현 (기본값) : options(scipen = 0)

profile
문돌이의 고군분투 개발 공부

0개의 댓글