< 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)