Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
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
Tags
more
Archives
Today
Total
관리 메뉴

류동균의 R 공부방입니다.

R 시각화 기초 plot 본문

ETC

R 시각화 기초 plot

R쟁이 2019. 9. 16. 21:41

R의 기본적인 시각화 도구인 plot에 대해서 알아보려고 한다,

 

ggplot2 등 더 좋은 여러 시각화 패키지들이 존재하지만 가장 기초가 되고 접근이 쉬운 plot로 먼저 트레이닝을 해보려한다.

 

plot을 알아보기위해  R에 기본적으로 있는 iris 데이터를 사용하여 트레이닝을 시작해보자.

 

plot(iris$Sepal.Length)

 

iris의 Sepal.Length로 plot을 만들었을때 기본적으로 값을 나타내는 점들이 가운대가 뚤려있는것을 알 수 있다.

 

이 점들을 안이 채워져있는 형태로 바꾸어보자

plot(iris$Sepal.Length, pch = 20)

 

pch라는 옵션을 사용하여 안이 채워진 형태의 점으로 시각화 하였다. pch의 옵션에는 여러가지가 있다.

 

점이 아니라 세모, 네모 등 여러가지 모형으로 값들을 나타낼 수 있다. 자세한것은 구글에 plot pch in r을 검색해보면 된다.

 

이번엔 점의 크기를 조정해보자

plot(iris$Sepal.Length, pch = 20, cex = 0.5)

cex라는 옵션을 사용하면 점의 크기를 변경할 수 있다. 기본값은 cex = 1 로 되어있다.

 

데이터의 종류에 따라 점, 선 등 여러가지 적합한 방법으로 시각화를 해야 보기에 좋다.

 

이번엔 점이아닌 선으로 시각화 해보자. type이란 옵션을 사용하여 점이아닌 선으로 표현할 수 있다.

 

여러가지 표현을 알고싶다면 역시 구글에 plot type in r을 검색 하면 된다.

plot(iris$Sepal.Length, pch = 20, cex = 0.5, type = "l")

이번엔 축의 제목을 바꿔보자 x축, y축 각각 xlab, ylab 이라는 옵션을 사용해 주면 된다.

plot(data1, pch=20, cex=0.5, type="l", xlab = "X", ylab = "y")

이번엔 그래프의 제목을 넣어주자 main옵션을 사용하면 된다.

plot(iris$Sepal.Length, pch = 20, cex = 0.5, type = "l", xlab = "x", ylab = "y", main = "Rplot")

그래프에 가로선, 세로선을 추가해보자.

 

abline이라는 함수를 사용하면되는데 가로선은 h옵션 세로선은 v옵션을 사용하면 된다.

 

선의 색깔은 col이라는 옵션을 사용한다.

abline(h = 5, col = "red")
abline(v = 50, col = "blue")

이번엔 그래프에 1차식을 나타내는 선을 만들어보자

 

abline함수에서 옵션 a는 y절편을 b는 기울기를 나타낸다.

 

lty옵션은 선의 유형을 바꾸는 것인데 lty =2 로 하면 점선의 형태로 나타난다.

abline(a= 4.5, b = 0.02, col = "red", lty = 2)

임의로 정한 선이아닌 회귀식을 사용하여 선을 만들어보자.

 

iris데이터의 Petal.Length를 종속변수로 Petal.Width를 독립변수로 정하여 만들어보자.

plot(iris$Petal.Width,iris$Petal.Length, pch=20, cex=0.5, type="p", xlab="X ", ylab="y ", main="Rplot")
abline(lm(iris$Petal.Length ~ iris$Petal.Width), col="red")

이번엔 여러가지 그래프를 한 화면에서 나타내보자 par함수의 mfrow 옵션을 사용하여 그래프를 1행 4열로 표현해보자.

 

par함수에 대해 자세한건 구글에 par in r을 검색해보면 더욱 상세하게 알 수 있다.

par(mfrow=c(1,4))
plot(iris$Sepal.Length, pch=20, cex=1, type="p", xlab="X ", ylab="y ", main="Sepal.Length")
plot(iris$Sepal.Width, pch=20, cex=1, type="p", xlab="X ", ylab="y ", main="Sepal.Width")
plot(iris$Petal.Length, pch=20, cex=1, type="p", xlab="X ", ylab="y ", main="Petal.Length")
plot(iris$Petal.Width, pch=20, cex=1, type="p", xlab="X ", ylab="y ", main="Petal.Width")

두가지 그래프를 겹쳐서 보고싶다. par의 new옵션을 TRUE로 해주면 된다.

plot(iris$Sepal.Length, pch=20, cex=1, type="p", xlab="X ", ylab="y ", main="Sepal.Length", col = "red")
par(new=TRUE)
plot(iris$Petal.Length, pch=20, cex=1, type="p", xlab="X ", ylab="y ", main="Petal.Length", col = "blue")

2개의 그래프를 한번에 표현하다보니 제목과 y축이 겹쳐서 이상하게 보인다.

 

plot함수의 ylim 옵션을 사용하여 y축의 최댓값을 1~8까지 제한해보자.

plot(iris$Sepal.Length, pch=20, cex=1, type="p",xlab="X ", ylab="y ", col = "red", ylim=c(1,8))
par(new=TRUE)
plot(iris$Petal.Length, pch=20, cex=1, type="p",xlab="X ", ylab="y ", col = "blue", ylim=c(1,8))

간단하게 plot에 대해 알아보았는데 이제 기초를 다졌으니 다음에는 ggplot2를 통한 심화된 시각화에 대해서 알아볼 예정이다.

 

참고 : 미완성의 신

'ETC' 카테고리의 다른 글

R을 통한 시스템 자동화 기초  (0) 2019.10.15
R 코드로 크롤링을 통한 파일 다운받기  (0) 2019.10.14
프로젝트 관리 툴 트렐로(Trello)  (0) 2019.10.14
업무 협업 툴 슬랙(Slack)  (0) 2019.10.14
Rstudy 첫번째 글  (0) 2019.07.31