본문 바로가기
R/Graph

R 산점도 Scatter - plot/그래프 옵션

by 통계열등생 2021. 3. 12.
반응형

산점도(Scatter Plot)는 주어진 데이터를 점으로 표시해 시각화한 그래프이다.

데이터의 분포를 한눈에 살펴볼 수 있어 유용하다.

 

 

 

 ◎ plot() 함수

 

plot(x, y, ...)

R에서 산점도는 plot() 함수로 그린다.

plot( X좌표, Y좌표 )의 형식을 사용하기도 하지만

plot( Y좌표 ~ X1좌표 + X2좌표 + ... )의  포뮬라 형식을 사용하면 여러개의 그래프를 차례대로 출력해준다.(콘솔창에서 엔터<Enter>키를 누르면 그래프를 볼 수 있다.)

 

> x = runif(15, 1, 100); x
 [1] 24.15888 86.42449 80.39122 46.64328 22.62998 70.58812
 [7] 29.39419 86.16871 79.72915 19.48776 32.10229 70.69019
[13] 84.15381 66.11607 24.38294
> y = runif(15, 5, 120); y
 [1]  86.60832  21.94369  40.35969 104.71062  48.46121  32.03513
 [7]  45.24142 118.11248  14.95524  76.72485  62.15224  59.16733
[13]  40.11043  64.63436 116.10998

runif() 함수는 균일분포를 따르는 난수를 발생시켜준다.

x 객체는 1~100 사이의 값을 가지는 난수 15개, y 객체는 5~120 사이의 값을 가지는 난수 15개를 저장하고 있다.

 

> opar = par(mfrow=c(1,2))
> plot( ~ x) 
> plot(x, y)  # plot(y ~ x)와 같은 그래프
> par(opar)

par() 함수의 mfrow 인수를 사용하면 그래프 배열방식을 설정할 수 있다. par(mfrow=c(행,열)) 코드에 원하는 행과 열의 수를 입력하면 여러개의 그래프를 한 화면에 출력할 수 있다. 또한 이 코드를 변수에 저장했다가 par(변수)를 호출하면 이전의 par설정(그래프 배열방식)으로 되돌릴 수 있다. 하지만 이전의 설정이 헷갈릴 수 있기 때문에 그냥 원하는 때에 par(mfrow=c(행,열)) 코드에 행, 열의 수를 입력해서 그래프 배열방식을 바꾸는 것이 더 편한 것 같다.

 

plot(x)와 plot( ~ x)의 결과는 다르다. 전자는 x객체를 y축에 놓고, x축에는 index(인덱스)를 놓아 그래프가 그려지지만 후자는 x객체를 x축에 놓고 그래프를 그린다.

 

RStudio를 사용한다면 그래프가 있는 Layout에 Zoom버튼을 눌러 그래프만 새로운 창에서 크게 볼 수 있다.

혹은 그래프를 그리기 전에 x11() 함수를 호출하면 역시 새로운 창에서 그래프를 볼 수 있다.

> x11(); plot(y ~ x)

 

 

 

 

 

 ◎ 그래프 옵션

 

xlab, ylab X, Y 축 이름
main, sub 그래프 메인제목, 서브제목
pch 산점도 점의 모양
cex 산점도 점의 크기
col, bg 색상, 채우기 색상
xlim, ylim X, Y 축의 값 범위
type 그래프 유형
lwd 선 넓이
lty 선 유형

 

> head(iris)
  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa
6          5.4         3.9          1.7         0.4  setosa

그래프의 주요 부분을 수정하는 그래프 옵션들을 설명하기 위해서 iris 데이터를 사용하려 한다.

 

 

 

  • xlab, ylab
> plot(iris[,1], iris[,3], xlab="Sepal.Length", ylab="Petal.Length")

xlab, ylab 옵션으로 x축과 y축의 이름을 지정할 수 있다.

 

 

 

  • main, sub
> plot(iris[,1], iris[,3], main="iris data", sub="Sepal.Length & Petal.Length")

main 옵션은 그래프의 제목을 지정한다. sub 옵션은 그래프의 서브제목을 지정하는데 x축이름의 밑에 위치해 있다.

 

 

 

  • pch

> par(mfrow=c(1,2))
> plot(iris[,1], iris[,3], pch=15)
> plot(iris[,1], iris[,3], pch="*")

pch 옵션으로 그래프 점의 모양을 지정해줄 수 있다. 위의 사진처럼 1~25 숫자로 지정할 수도 있고, 문자를 사용할 수도 있다.

 

 

 

  • cex
> plot(iris[,1], iris[,3], cex=.5)
> plot(iris[,1], iris[,3], cex=2)

cex 옵션은 character expension(확대)의 줄임말로 cex가 작을수록 점의 크기가 비례하여 작아지고, 클수록 점의 크기가 비례해 커진다. cex 옵션의 기본값은 1이다.

 

> par(mfrow=c(1,1))
> plot(iris[,1], iris[,3], cex=iris[,4])

iris의 4번째 열 데이터를 cex 옵션에 넣어주면 4번째 열 데이터의 값에 따라 점크기를 다르게 그릴 수 있다.

 

 

 

  • col, bg
> par(mfrow=c(1,2))
> plot(iris[,1], iris[,3], col=iris[,5])
> plot(iris[,1], iris[,3], col=iris[,5], pch=21, bg="#FF9090")

iris의 5번째 열 데이터는 붓꽃의 종류로 setosa, versicolor, virginica에 따라 색상을 다르게 그래프를 그릴 수 있다.

bg 옵션은 pch 옵션이 21~25일때 점의 채우기 색상을 지정할 수 있다. 이때 점의 테두리 색상은 col 옵션으로 지정한다. 

col 옵션과 bg옵션은 색상 이름 or RGB 색상 등으로 지정할 수 있다. RGB를 사용해 색상을 변경하려면 "#RRGGBB"의 형식으로 값을 지정한다. 

 

> par(mfrow=c(2,2))
> plot(iris[,1], iris[,3], col="#FF0000")
> plot(iris[,1], iris[,3], col="red")
> plot(iris[,1], iris[,3], col.axis="#FF0000")
> plot(iris[,1], iris[,3], col.lab="#FF0000")

col.axis 옵션이나 col.lab 옵션 등으로 그래프 여러부분의 색상을 변경할 수 있다.

 

 

 

  • xlim, ylim
> range(iris$Sepal.Length)
[1] 4.3 7.9
> range(iris$Petal.Length)
[1] 1.0 6.9
> par(mfrow=c(1,1))
> plot(iris[,1], iris[,3], xlim=c(4,10), ylim=c(0,10))

xlim, ylim 옵션으로 좌표축 값의 범위를 조정할 수 있다. 데이터의 최대값, 최솟값을 구해서 그보다 넉넉하게 좌표축 값의 범위를 조정하기도 한다.

 

 

 

  • type
> price = rnorm(10)
> price 
 [1]  0.6221650 -1.4599473  0.4535445  0.2238440  0.8460288
 [6]  0.6491366 -1.3982918  0.2797647 -0.2445438 -1.2415558

> par(mfrow=c(2,4)) 
> plot(price, type="p") # 점
> plot(price, type="l") # 실선 
> plot(price, type="b") # 점과 실선(점 통과X)
> plot(price, type="c") # "b"에서 점 제거
> plot(price, type="o") # 점과 실선(점 통과O) 
> plot(price, type="h") # 직선
> plot(price, type="s") # 계단
> plot(price, type="S") # 계단

type 옵션으로 그래프의 유형을 지정한다.

"p" for points.  
"l" for lines.
"b" for both points and lines.
"c" for empty points joined by lines.
"o" for overplotted points and lines. 

"h" for histogram-like vertical lines.
"s" and "S" for stair steps.
"n" does not produce any points or lines.

"n"은 그래프를 그려도 빈화면으로 출력된다. 후에 lines(), text() 함수 등을 빈화면 위에 출력하기 위해 사용한다.

 

 

 

  • lwd, lty
> par(mfrow=c(1,2))
> plot(price, type="o", pch=19, col="green", cex=1.5, lwd=3) 
> plot(price, type="o", pch=19, col="orange", cex=1.5, lwd=2, lty="dashed") 
> par(mfrow=c(1,1))

lwd 옵션은 선 넓이(line width), lty 옵션은 선 유형(line type)을 지정한다. lty 옵션은 숫자 or 문자열로 지정할 수 있다.

(0="blank", 1="solid"(default), 2="dashed", 3="dotted", 4="dotdash", 5="longdash", 6="twodash")

 

 

 

 

※ 산점도 행렬과 3차원 산점도 그리는 방법

small22.tistory.com/32

 

R 산점도 Scatter - 산점도행렬/3차원산점도

> head(iris) Sepal.Length Sepal.Width Petal.Length Petal.Width Species 1 5.1 3.5 1.4 0.2 setosa 2 4.9 3.0 1.4 0.2 setosa 3 4.7 3.2 1.3 0.2 setosa 4 4.6 3.1 1.5 0.2 setosa 5 5.0 3.6 1.4 0.2 setosa 6..

small22.tistory.com

 

 

 

 

 

<R 산점도 Scatter - plot/그래프 옵션>

 

반응형

댓글