간만에 R관련 포스팅입니다. 이번에 다룰 함수는 "lines"라는 함수 입니다.
일전에 보여드렸던 "plot" 함수에서는 plot의 틀과 자료를 출력 할 수 있었는데요.
이후 이 plot 함수로 출력한 결과에 덧붙여 선들을 출력하고자 할 때 유용하게 사용할 수 있습니다.
Lines(x,y,col,lty)
lines() 함수도 graphic 함수군에 속하므로 par()함수의 옵션 대부분을 그대로 이용할 수 있습니다.
대충 위에 열거한 정도만 알면 될 뜻 싶네요.
x : x축 data를 나타냅니다.
y : y축 data를 나타냅니다. y축 data는 경우에 따라 넣지 않아도 상관 없습니다.
col : 선의 색을 지정합니다.
lty : 선의 종류를 지정합니다.
간단하게 예제를 보시겠습니다~

보통 사용되어 지는 곳은 동일한 domain에서 여러가지 결과를 겹쳐서 출력해야 할 때 주로 쓰입니다.
저도 논문 세미나에서 시뮬레이션 결과를 비교해서 보일 때 자주 사용하였습니다.
또는 산점도 위에 회귀분석 결과를 출력 할 수도 있지요.

예제 1
x <- seq(-5,5,0.01) # x의 domain 지정
y <- array(0,c(3,length(x))) # 각 함수의 결과를 저장할 변수를 배열로 구성
y[1,1:length(x)] <- dnorm(x,0,1) # N(0,1)
y[2,1:length(x)] <- dlogis(x,0,1) # Logis(0,1)
y[3,1:length(x)] <- dcauchy(x,0,1) # Cauchy(0,1)
plot(x,x, xlim=c(-5.5, 5.5), ylim=c(0,.5),type='n') # type='n'을 이용하여 빈 plot 틀을 출력
for(i in 1:3) { lines(x,y[i,],col=i,lty=i)} # for() 를 이용하여 각 lines를 출력
# 범례 출력
legend("topright",legend=c("N(0,1)","Logis(0,1)", "Cauchy(0,1)"), ,lty=c(1,1,1),col=1:3)
예제 2
x <- runif(100,50,100) # 50~100까지의 수 중 랜덤하게 100개 추출
y <- runif(100,2,3.27) # 2~3.27까지의 수 중 랜덤하게 100개 추출
z <- 1.1*x*y+rnorm(100,0,3) # 1.1 * x * y + error term으로 z를 계산
plot(x,z) # x, z의 산점도 출력
lm.r <- lm(z~x) # 회귀 계수 계산
qq <- lm.r$coeff # 회귀 계수 추출
x2 <- sort(x)
lines(x2,qq[1] + qq[2]*x2) # 회귀 직선 출력



덧글