ggplot2를 사용한 R의 산점도(예제 포함)
그래프는 데이터 분석 프로세스의 세 번째 부분입니다. 첫 번째 부분은 대략 데이터 예시trac기, 두 번째 부분에서는 다음을 다룹니다. 데이터 정리 및 조작. 마침내 데이터 과학자는 다음을 수행해야 할 수도 있습니다. 결과를 그래픽으로 전달.
데이터 과학자의 직무는 다음 그림에서 검토할 수 있습니다.
- 데이터 과학자의 첫 번째 임무는 연구 질문을 정의하는 것입니다. 이 연구 질문은 프로젝트의 목표와 목표에 따라 다릅니다.
- 그 후 가장 눈에 띄는 작업 중 하나가 Feature Engineering입니다. 데이터 과학자는 데이터를 수집, 조작, 정리해야 합니다.
- 이 단계가 완료되면 데이터 세트 탐색을 시작할 수 있습니다. 때로는 새로운 발견으로 인해 원래의 가설을 다듬고 변경해야 하는 경우도 있습니다.
- 때 설명 분석이 달성되면 데이터 과학자는 독자의 능력을 고려해야 합니다. 기본 개념과 모델을 이해하다.
- 그의 결과는 모든 이해관계자가 이해할 수 있는 형식으로 제시되어야 합니다. 가장 좋은 방법 중 하나는 소통 결과는 그래프.
- 그래프는 복잡한 분석을 단순화하는 놀라운 도구입니다.
ggplot2 패키지
튜토리얼의 이 부분은 R을 사용하여 그래프/차트를 만드는 방법에 중점을 둡니다.
이 튜토리얼에서는 ggplot2 패키지를 사용합니다. 이 패키지는 Wilkinson이 2005년에 저술한 "그래픽 문법(Grammar of Graphics)"이라는 책의 일관된 기본 원리를 바탕으로 만들어졌습니다. ggplot2는 매우 유연하며, 다양한 테마와 플롯 지정 기능을 높은 수준의 추상화 수준에서 제공합니다.tracggplot2로는 3차원 그래프를 그리거나 인터랙티브 그래프를 만들 수 없습니다.
ggplot2에서 그래프는 다음 인수로 구성됩니다.
- 데이터
- 미적 지도ping
- 기하학적 객체
- 통계적 변환
- 저울
- 좌표계
- 위치 조정
- 면처리
튜토리얼에서 이러한 인수를 제어하는 방법을 배우게 됩니다.
ggplot2의 기본 구문은 다음과 같습니다.
ggplot(data, mapping=aes()) + geometric object arguments: data: Dataset used to plot the graph mapping: Control the x and y-axis geometric object: The type of plot you want to show. The most common object are: - Point: `geom_point()` - Bar: `geom_bar()` - Line: `geom_line()` - Histogram: `geom_histogram()`
산포도
ggplot이 mtcars 데이터세트와 어떻게 작동하는지 살펴보겠습니다. mpg 변수와 drat 변수의 산점도를 그리는 것으로 시작합니다.
기본 산점도
library(ggplot2)
ggplot(mtcars, aes(x = drat, y = mpg)) +
geom_point()
Code 설명
- 먼저 mtcars 데이터세트를 ggplot에 전달합니다.
- aes() 인수 내에 x축과 y축을 추가합니다.
- + 기호는 R이 코드를 계속 읽기를 원한다는 것을 의미합니다. 코드를 쪼개서 더 읽기 쉽게 만듭니다.
- 기하학적 객체에는 geom_point()를 사용합니다.
출력:
그룹이 있는 산점도
때로는 데이터 그룹(예: 요인 수준 데이터)별로 값을 구별하는 것이 흥미로울 수 있습니다.
ggplot(mtcars, aes(x = mpg, y = drat)) +
geom_point(aes(color = factor(gear)))
Code 설명
- geom_point() 내부의 aes()는 그룹의 색상을 제어합니다. 그룹은 요인변수여야 합니다. 따라서 가변 기어를 요소로 변환합니다.
- 전체적으로 점의 색상을 변경하는 코드 aes(color = Factor(gear))가 있습니다.
출력:
축 변경
데이터 크기를 조정하는 것은 데이터 과학자 작업의 큰 부분입니다. 드물지만 데이터가 멋진 종 모양으로 나타나는 경우도 있습니다. 데이터를 이상치에 덜 민감하게 만드는 한 가지 솔루션은 데이터 크기를 조정하는 것입니다.
ggplot(mtcars, aes(x = log(mpg), y = log(drat))) +
geom_point(aes(color = factor(gear)))
Code 설명
- aes() 맵 내부에서 log()를 사용하여 x와 y 변수를 직접 변환합니다.ping.
표준화 또는 정규화와 같은 다른 변환을 적용할 수 있습니다.
출력:
적합치가 있는 산점도
그래프에 다른 수준의 정보를 추가할 수 있습니다. 선형 회귀의 적합치를 표시할 수 있습니다.
my_graph <- ggplot(mtcars, aes(x = log(mpg), y = log(drat))) +
geom_point(aes(color = factor(gear))) +
stat_smooth(method = "lm",
col = "#C42126",
se = FALSE,
size = 1)
my_graph
Code 설명
- 그래프: 그래프를 변수 그래프에 저장합니다. 이는 추가 사용에 도움이 되거나 너무 복잡한 코드 줄을 피하는 데 도움이 됩니다.
- stat_smooth() 인수는 스무딩 방법을 제어합니다.
- 방법 = “lm”: 선형 회귀
- col = “#C42126”: Code 선의 붉은색을 위해
- se = FALSE: 표준 오류를 표시하지 않습니다.
- size = 1: 선의 크기는 1입니다.
출력:
다른 평활화 방법을 사용할 수 있습니다.
- glm
- gam
- 황토: 기본값
- 가장자리
그래프에 정보 추가
지금까지 그래프에 정보를 추가하지 않았습니다. 그래프는 유익해야 합니다. 독자는 추가 문서를 참조하지 않고도 그래프만 보고도 데이터 분석의 배경 스토리를 알 수 있어야 합니다. 따라서 그래프에는 좋은 레이블이 필요합니다. labs() 함수로 레이블을 추가할 수 있습니다.
lab()의 기본 구문은 다음과 같습니다.
lab(title = "Hello Guru99") argument: - title: Control the title. It is possible to change or add title with: - subtitle: Add subtitle below title - caption: Add caption below the graph - x: rename x-axis - y: rename y-axis Example:lab(title = "Hello Guru99", subtitle = "My first plot")
제목 추가
추가해야 할 필수 정보 중 하나는 당연히 제목입니다.
my_graph +
labs(
title = "Plot Mile per hours and drat, in log"
)
Code 설명
- my_graph: 저장한 그래프를 사용합니다. 그래프에 새로운 정보를 추가할 때마다 모든 코드를 다시 작성하는 것을 방지합니다.
- lab() 내부에 제목을 래핑합니다.
- Code 선의 붉은색을 위해
- se = FALSE: 표준 오류를 표시하지 않습니다.
- size = 1: 선의 크기는 1입니다.
출력:
동적 이름으로 제목 추가
동적 제목은 제목에 보다 정확한 정보를 추가하는 데 도움이 됩니다.
Paste() 함수를 사용하여 정적 텍스트와 동적 텍스트를 인쇄할 수 있습니다. Paste()의 기본 구문은 다음과 같습니다.
paste("This is a text", A)
arguments
- " ": Text inside the quotation marks are the static text
- A: Display the variable stored in A
- Note you can add as much static text and variable as you want. You need to separate them with a comma
예:
A <-2010
paste("The first year is", A)
출력:
## [1] "The first year is 2010"
B <-2018
paste("The first year is", A, "and the last year is", B)
출력:
## [1] "The first year is 2010 and the last year is 2018"
그래프에 mpg 평균이라는 동적 이름을 추가할 수 있습니다.
mean_mpg <- mean(mtcars$mpg)
my_graph + labs(
title = paste("Plot Mile per hours and drat, in log. Average mpg is", mean_mpg)
)
Code 설명
- 평균 mpg 변수에 저장된 평균(mtcars$mpg)을 사용하여 mpg의 평균을 생성합니다.
- mpg의 평균값을 반환하는 동적 제목을 생성하려면 평균_mpg와 함께 붙여넣기()를 사용합니다.
출력:
자막 추가
두 가지 추가 세부 사항을 통해 그래프를 더욱 명확하게 만들 수 있습니다. 자막과 캡션에 대해 이야기하고 있습니다. 부제목은 제목 바로 아래에 있습니다. 캡션을 통해 계산을 수행한 사람과 데이터 소스를 알 수 있습니다.
my_graph +
labs(
title =
"Relation between Mile per hours and drat",
subtitle =
"Relationship break down by gear class",
caption = "Authors own computation"
)
Code 설명
- lab() 내부에 다음을 추가했습니다.
- title = “마일당 시간과 drat 간의 관계”: 제목 추가
- subtitle = "장비 클래스별 관계 분석": 부제 추가
- caption = “저자 자신의 계산: 캡션 추가
- 각각의 새 정보를 쉼표, ,로 구분합니다.
- 코드 줄이 끊어진다는 점에 유의하세요. 필수는 아니며 코드를 더 쉽게 읽는 데 도움이 됩니다.
출력:
x축 및 y축 이름 바꾸기
데이터 세트의 변수 자체는 항상 명시적이지 않거나 여러 단어가 있는 경우 관례에 따라 _를 사용합니다(예: GDP_CAP). 그래프에 그런 이름이 나타나지 않기를 바랍니다. 이름을 변경하거나 단위와 같은 세부 정보를 추가하는 것이 중요합니다.
my_graph +
labs(
x = "Drat definition",
y = "Mile per hours",
color = "Gear",
title = "Relation between Mile per hours and drat",
subtitle = "Relationship break down by gear class",
caption = "Authors own computation"
)
Code 설명
- lab() 내부에 다음을 추가했습니다.
- x = “Drat 정의”: x축 이름 변경
- y = “시간당 마일”: y축 이름 변경
출력:
저울 제어
축의 크기를 제어할 수 있습니다.
seq() 함수는 일련의 숫자를 생성해야 할 때 편리합니다. 기본 구문은 다음과 같습니다.
seq(begin, last, by = x) arguments: - begin: First number of the sequence - last: Last number of the sequence - by= x: The step. For instance, if x is 2, the code adds 2 to `begin-1` until it reaches `last`
예를 들어, 0단계로 12~3까지의 범위를 만들려면 0, 4, 8, 12의 네 개의 숫자가 필요합니다.
seq(0, 12,4)
출력:
## [1] 0 4 8 12
아래와 같이 x축과 y축의 스케일을 제어할 수 있습니다.
my_graph +
scale_x_continuous(breaks = seq(1, 3.6, by = 0.2)) +
scale_y_continuous(breaks = seq(1, 1.6, by = 0.1)) +
labs(
x = "Drat definition",
y = "Mile per hours",
color = "Gear",
title = "Relation between Mile per hours and drat",
subtitle = "Relationship break down by gear class",
caption = "Authors own computation"
)
Code 설명
- scale_y_continuous() 함수는 y 축
- scale_x_continuous() 함수는 x 축.
- break 매개변수는 축 분할을 제어합니다. 숫자 시퀀스를 수동으로 추가하거나 seq() 함수를 사용할 수 있습니다.
- seq(1, 3.6, by = 0.2): 2.4씩 증가하면서 3.4에서 3까지 XNUMX개의 숫자를 생성합니다.
- seq(1, 1.6, by = 0.1): 1부터 1.6까지 1씩 증가하면서 XNUMX개의 숫자를 생성합니다.
출력:
테마
마지막으로 R을 사용하면 다양한 테마로 플롯을 사용자 정의할 수 있습니다. ggplot2 라이브러리에는 XNUMX가지 테마가 포함되어 있습니다.
- theme_bw()
- theme_light()
- theme_classis()
- theme_linedraw()
- theme_dark()
- theme_minimal()
- 테마_회색()
- theme_void()
my_graph +
theme_dark() +
labs(
x = "Drat definition, in log",
y = "Mile per hours, in log",
color = "Gear",
title = "Relation between Mile per hours and drat",
subtitle = "Relationship break down by gear class",
caption = "Authors own computation"
)
출력:
플롯 저장
이 모든 단계를 마친 후에는 그래프를 저장하고 공유할 차례입니다. 그래프를 그린 직후에 ggsave('NAME OF THE FILE)을 추가하면 하드 드라이브에 저장됩니다.
그래프는 작업 디렉터리에 저장됩니다. 작업 디렉터리를 확인하려면 다음 코드를 실행하면 됩니다.
directory <-getwd() directory
환상적인 그래프를 그려서 저장하고 위치를 확인해 보세요
my_graph +
theme_dark() +
labs(
x = "Drat definition, in log",
y = "Mile per hours, in log",
color = "Gear",
title = "Relation between Mile per hours and drat",
subtitle = "Relationship break down by gear class",
caption = "Authors own computation"
)
출력:
ggsave("my_fantastic_plot.png")
출력:
## Saving 5 x 4 in image
주의 사항: 교육적 목적으로만 디렉토리 폴더를 열어주는 open_folder()라는 함수를 만들었습니다. 아래 코드를 실행하고 사진이 어디에 저장되어 있는지 확인하기만 하면 됩니다. my_fantastic_plot.png 파일 이름이 표시되어야 합니다.
# Run this code to create the
function
open_folder <- function(dir) {
if (.Platform['OS.type'] == "windows") {
shell.exec(dir)
} else {
system(paste(Sys.getenv("R_BROWSER"), dir))
}
}
# Call the
function to open the folder open_folder(directory)
제품 개요
산점도를 만드는 데 필요한 인수를 아래 표에 요약할 수 있습니다.
| 목표 | Code |
|---|---|
| 기본 산점도 |
ggplot(df, aes(x = x1, y = y)) + geom_point() |
| 색상 그룹이 있는 산점도 |
ggplot(df, aes(x = x1, y = y)) + geom_point(aes(color = factor(x1)) + stat_smooth(method = "lm") |
| 적합치 추가 |
ggplot(df, aes(x = x1, y = y)) + geom_point(aes(color = factor(x1)) |
| 제목 추가 |
ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(title = paste("Hello Guru99"))
|
| 자막 추가 |
ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(subtitle = paste("Hello Guru99"))
|
| x 이름 바꾸기 |
ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(x = "X1") |
| y 이름 바꾸기 |
ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(y = "y1") |
| 규모를 제어 |
ggplot(df, aes(x = x1, y = y)) + geom_point() + scale_y_continuous(breaks = seq(10, 35, by = 10)) + scale_x_continuous(breaks = seq(2, 5, by = 1) |
| 로그 생성 |
ggplot(df, aes(x =log(x1), y = log(y))) + geom_point() |
| 테마 |
ggplot(df, aes(x = x1, y = y)) + geom_point() + theme_classic() |
| 찜하기 |
ggsave("my_fantastic_plot.png")
|












