獨斷論

통계 R 사용설명서 6 - 간단한 그래프 그리기 본문

과학과 기술/R 통계

통계 R 사용설명서 6 - 간단한 그래프 그리기

부르칸 2016. 2. 17. 23:08

R에서 그릴수 있는 간단한 그래프를 그리는 방법을 알아보자


산점도(scatter plot)과 선형회귀선


일단 아래 명령줄을 실행한다.


1

2

3

4

5

6

 > str(cars)
 > attach(cars)
 > plot(speed, dist)
 > abline(lm(dist ~ speed))
 > title("Regression of car speed and stopping distance")
 > detach(cars)


cars라는 데이터는 내장된 것으로 자동차의 정지거리와 속도와의 관계를 나타낸 것이다.

3째 줄에서 cars$speed를 X축, cars$dist를 Y축으로 하여 산점도를 그렸다.

4번째 줄에서 dist = a * speed + b의 형식으로 하는 선형회귀선을 그렸다. 주의할 것은 plot에서 변수 순서와 abline에서 변수 순서가 잘못되면 선형회귀선이 안그려진다는거... X변수와 Y변수를 주의해서 그려야한다.

5번째 줄에서 그래프의 제목을 넣었다.

2번과 6번줄은 지난번에 설명했다.

 

그래프를 저장하는 방법은 그래프가 그려진 윈도우의 파일 메뉴에서 Save As를 클릭하여 원하는 형식의 파일로 저장하면 된다.

 

 

점과 선이 있는 그래프 그리기

 

 

위에서는 점만 가지고 그래프를 그렸다면 가지고 있는 데이터를 점으로도 그리고 그 점을 선으로 연결하는 그래프를 그려보자.

R의 내장 데이터가운데 BOD라는 데이터가 있는데 시간에 따른 생물학적산소요구량을 나타낸 것이다.

이를 점선 그래프로 그리면


1

2

3

4

 > str(BOD)
 > attach(BOD)
 > plot(Time, demand, type = 'b')
 > detach(BOD)

 

앞에 했던것과 다른점은 3번줄에 type = 'b'가 추가된 것이다. b는 점과 선을 둘다 표시하라는 의미이다(both).

선만 그린다면 l을 쓰고(Line), 점을 그릴때는 저절로 해주지만 p를 쓰면 된다(Point)





 

그래프 파라메터 설정하기


그래프를 그릴때 설정해야할 여러가지 것들을 옵션으로 한꺼번에 설정할수 있다. 사용하는 함수는 par()이고 사용방법은 다음과 같다. 


orignal_par <- par(no.readonly = TRUE) # 원래의 그래프 파라메터를 모두 저장

par(option_name1 = value1, option_name2 = value2, ..., ) # 파라메터를 바꾼다
## 여기에 그래프를 그리는 명령들을 넣는다.

## 그러면 바로 윗줄에서 바뀐 파라메터에 따라 그래프가 그려진다.
par(orignal_par) # 원래의 파라메터로 되돌려 놓는다


par()에 사용되는 option_name과 그 value들은 여러가지가 있으니 R console에서 ?par를 입력하면 알아볼수 있고 여기서는 중요한 몇개만 알아보자.


선의 굵기, lwd

option_name은 lwd이고 value는 자연수이다. 기본적으로 1이다. 즉 lwd = 1 또는 lwd = 2 뭐 이렇게 사용하면 된다.


선의 형태, lty

lty의 값은 0에서부터 6까지 갖는다. 0으로 설정하면 선이 안보인다. 그리고 그 숫자에 해당되는 선의 형태는 다음과 같다.

0=blank, 1=solid (기본값임), 2=dashed, 3=dotted, 4=dotdash, 5=longdash, 6=twodash

숫자로도 설정할수 있지만 위 해당형태의 문자를 써도 된다. 즉

lty = 2lty = "dashed"와 같다.


심벌 종류, pch

pch의 값은 정수나 한개의 문자를 가질수 있는데 여기서는 가장 많이 쓰이는 숫자만 소개한다. 다음과 같다.




문자와 심벌 확대, cex

그래프에 사용되는 문자와 심벌들을 얼마나 크게 확대하는지 나타낸다. 1.5의 값을 주면 150% 확대되고 0.6을 주면 60%로 축소된다. 기본값은 1이다.


이제 위 파라메터를 바꿔서 그래프를 그려보자.


 

1

2

3

4

5

6

 > attach(BOD)
 > op <- par(no.readonly = TRUE)
 > par(lwd = 3, lty = 4, pch = 2, cex=2)
 > plot(Time, demand, type='b')
 > detach(BOD)
 > par(op)

 

아래와 같은 그래프가 그려지는데 파라메터를 너무 과장되게 줘서 바보같은 그림이 그려졌다. 
 



그래프에 글자 써넣기

그래프에 글자를 써 넣으려면 다음과 같이 하면 된다.


 

1

2

3

4

5

6

7

 > attach(BOD)

 > op <- par(no.readonly=TRUE)
 > par(lwd=3, lty=4, pch=2, cex=2)
 > plot(Time, demand, type='b', main = "Time vs. demand", sub = "Relation between time and BOD", xlab = "Time [h]", ylab = "demand [kg]")  #이건 한줄로 입력하는 것이다.
 > par(op)
 > detach(BOD)

 

 

 

 

 

한 화면에 그래프 여러개 그리기

mfrow라는 그래프 파라메터를 이용한다.

mfrow = c(5,2)로 하여 par()안에 설정을 하면 5x2의 형태로 그래프를 만들게 된다.


 

1

2

3

4

5

6

7

8

9

10

11

 > attach(mtcars)
 > op <- par(no.readonly=TRUE)
 > par(mfrow = c(3,2))
 > hist(wt, main="Histogram of wt")
 > hist(cyl, main="Histogram of cyl")
 > plot(wt, cyl, main="wt vs. cyl")
 > plot(hp, disp, main="hp vs. disp")
 > plot(wt, mpg, main="wt vs. mpg")
 > hist(mpg, main="Histogram of mpg")
 > par(op)
 > detach(mtcars)

 

1째 줄에서 mtcars라는 데이터를 메모리에 올렸다.

2째 줄에서 파라메터를 저장하고

3번째 줄에서 mfrow라는 파라메터 옵션을 이용하여 3x2짜리의 여러개 그래프를 그릴수 있도록 하였다.

4~9번째줄에서 6개의 그래프를 그렸고 3x2의 그래프가 만들어졌다.

 

그래프는 다음과 같다.

 

 

 

 

 

뭐 지금까지 지리하게 그래프에 대한 것을 설명하였으니 요즘 누가 이런걸로 그래프를 그릴까 ㅋㅋ

그냥 기본적인 것만 알아두고 R결과를 슬쩍 슬쩍 볼때만 이용하면 된다.

논문에 낼때는 Sigmaplot, Graphpad, Excel등을 이용하면 더 쉽고 이쁜 그래프가 그려진다.

Comments