R:ggplot2(그래프그리기)
R언어 공부를 위한 틀 틀:R
ggplot2
R과 Python에서 그래프를 그려주는 패키지.
단계 | 방법 | 사용법 |
---|---|---|
패키지 부착 | 패키지 부착은
2개를 시켜야 한다. |
library(ggplot2) library(ggthemes)
|
기초 데이터 준비 | 데이터셋과
x축에 둘 열을 준비 ggplot(데이터셋, aes( x = 열 )) aesthetic(미적)의 줄임말. |
ggplot(데이터셋, aes( x = 열 )) |
그래프 그리기
단계 | 방법 | 사용법 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
각 축에 대한 막대를 그린다.
(명목형 변수에 대하여) |
ggplot(데이터셋, aes( x = 열이름1 )) + geom_bar(속성)
열에 해당하는 값을 세어 막대의 크기로 표현한다.
|
기초데이터
+ geom_bar(속성) | ||||||||||||||||
히스토그램
(연속형 변수에 대하여) |
연속형변수를 일정구간으로 나누어 집계한다.
ggplot(데이터셋, aes( x = 열이름1 )) + geom_histogram(속성)
|
기초데이터
+ geom_histogram(속성) | ||||||||||||||||
밀도그래프
(연속형 변수에 대하여) |
위와 같은 개념이지만, 구간을 작게 나누어 부드러운 곡선을 그린다.
ggplot(데이터셋, aes( x = 열이름1 )) + geom_density(속성)
|
기초데이터
+ geom_density(속성) | ||||||||||||||||
박스플롯 | 가운데 선은 중위값,
아래는 1분위수, 위는 3분위수를 나타낸다. 그 밖의 값들은 이상치. |
기초데이터
+ geom_boxplot(속성) | ||||||||||||||||
산점도 | ggplot(데이터셋, aes( x = 열이름1, y = 열이름2 ))
다음처럼 특정 조건을 만족하는 값을 다른 색으로 처리해 계산할 수도 있다. geom_point(aes(col = 열이름) |
기초데이터
+ geom_point(속성) | ||||||||||||||||
회귀선 | geom_smooth(aes(x=열이름1, y=열이름2)), method='lm' |
그래프 안에 다른 열을 넣으면 그 열별로 따로 계산된다.
geom_boxplot(aes(fill="열이름")
축 다루기
의도 | 설명 | 사용법 |
---|---|---|
축의 데이터범위 설정하기 | 그래프의 어느 범위를 보여줄지 설정할 수 있다.
scale_y_continuous(breaks = seq(시작값, 끝값, by=공차)) |
그래프 +
scale_y_continuous(expand = c(0,0), breaks = seq(0, 10000, by=1000)) |
그래프를 축에 맞추어 그리기 | scale_y_continuous(expand = c(0,0))
벡터 안의 숫자는 여백을 의미한다. |
그래프 +
scale_y_continuous(expand = c(0,0)) |
축 바꾸기 | x축을 y축과 바꾼다. | 그래프 +
coord_flip() |
그래프 꾸미기
범례
의도 | 설명 | 사용법 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
범례 달기 | labs(fill = "내용") | 그래프 +
labs(fill = "내용") | ||||||||||||
범례위치 수정 | theme(legend.position = 속성)
|
그래프 +
theme(legend.position = 속성) | ||||||||||||
범례없애기 | theme(legend.position = 'none') | 그래프 +
theme(legend.position = 'none') | ||||||||||||
범례 테두리 | theme 안에 다음의 내용을 끼워넣는다.
theme(legend.box.background = 속성, legend.box.margin =margin(상, 하, 좌, 우) margin은 그래프와 테두리 사이의 여백을 의미한다.
|
그래프 +
theme(legend.position = 속성, legend.box.background = element_rect, legend.box.margin =margin(1, 1, 1, 1) ) |
글자
의도 | 설명 | 사용법 | ||||||||
---|---|---|---|---|---|---|---|---|---|---|
글자 크기 바꾸기 | theme 안에 각종 속성을 두어 적용한다.
|
그래프 +
theme(axis.text.x = element_text(size = 10) | ||||||||
글자각도 바꾸기 | theme 안에 angle 속성을 두어 적용한다. | 그래프 +
theme(axis.text.x = element_text(size = 10, angle=90) |
색 채우기
각 그래프의 속성 안에 넣으면 된다.
의도 | 방법 및 설명 | 사용법 |
---|---|---|
그래프색 채우기 | x축에 사용한 열이름을 기입하면 데이터별로 색을 채운다.
면적이 있는 도형의 색을 채울 때 사용. |
기초데이터 +
geom_bar(aes(fill=열이름)) |
테두리색 채우기 | x축에 사용한 열이름을 기입하면 테두리 색을 바꾼다. | 기초데이터 +
geom_bar(aes(col=열이름)) |
색 직접 채우기 | 색 이름을 직접 채우고 싶을 때 사용한다. | 그래프 +
scale_fill_manual(values = c('색이름1', '색이름2', ...) |
색 연하게 채우기 | 그래프를 투명하게 만들 고 싶을 때.
alpha에 0~1 사이의 숫자를 넣어 불투명도를 전달한다. |
기초데이터 +
geom_bar(속성등등... , alpha=숫자) |
테마
그래프 바탕을 꾸민다.
library(ggthemes) 를 추가로 불러주고 진행해야 한다.
테마 | 방법 및 설명 | 사용법 |
---|---|---|
theme_classic() | 기존의 코드 뒤에 덧붙인다.
아무것도 없는 흰색 바탕의 그래프를 그린다. |
그래프 +
theme_classic() |
theme_bw() | 회색 격자선과 그래프 전체를 감싸는 검은 테두리 | 그래프 +
theme_bw() |
theme_dark() | 진한 회색 바탕에 더 진한 격자선 | 그래프 +
theme_dark() |
theme_light() | 그래프 +
theme_light() |
이외 기능
의도 | 방법 | 사용법 |
---|---|---|
라벨 붙이기 | 위의 명령 뒤에 라벨을 붙인다. | 그래프
+ xlab("x라벨") + ylab("y라벨") |
타이틀 붙이기 | 그래프
+ ggtitle("타이틀") | |