R: Plot()

m_ngyeong·2025년 3월 27일
0

Database(DB)

목록 보기
6/7
post-thumbnail

plot()


R에서 가장 흔히 사용되는 함수로 분포도나 꺽은선 그래프 등을 그릴 수 있다.

기본 문법

plot(y축 데이터, 옵션)
plot(x축 데이터, y축 데이터, 옵션)
  • plot.new(): 현재 창의 내용을 모두 지우고 새로 그래프를 그림.
  • dev.new(): 새로운 창에 그래프를 다시 그림.

방식

R에서 대부분 데카르트 방식을 이용한다.

데카르트 방식 : plot(x,y)
수식기반 방식 : plot(y~x)

기본 그래프

> var1 <- c(1,2,3,4,5)
> plot(var1)

그래프의 배치 조정 (mfrow)

  • par(mfrow = c(nr,nc)) : 가로 방향
    • nr: 행의 갯수
    • nc: 열의 갯수
  • par(mfcol = c(nr,nc)) : 세로 방향

Error in plot.new() : figure margins too large

margin 기본 설정이 너무 좁게 설정 되어 있어 발생하는 오류이다.

➡️ 마진을 재설정:
1.

#par("mar")
par(mar=c(1,1,1,1))
  1. 윈도우창을 최대로 늘리기

Option

그래프 타입설명
type="p"점 모양(기본값) 그래프
type="ㅣ"선 모양(꺾은선) 그래프
type="b"점과 선 모양 그래프
type="c""b"에서 점을 생략한 그래프
type="o"점과 선을 중첩해서 그린 그래프
type="h"각 점에서 x축까지의 수직선(막대선) 그래프
type="s"왼쪽값을 기초로 계단모양으로 연결한 선
type="S"오른쪽값을 기초로 계단모양으로 연결한 선
type="n"그래프 없이 축만 그린 것

선의 모양설명
lty=0, lty="blank"투명선
lty=1, lty="solid"실선
lty=2, lty="dashed"대쉬선
lty=3, lty="dotted"점선
lty=4, lty="dotdash"점선과 대쉬선
lty=5, lty="longdash"긴 대쉬선
lty=6, lty="twodash"2개의 대쉬선

색, 기호 등설명
col=1, col="blue"기호의 색지정, 1-검정, 2-빨강, 3-초록, 4-파랑, 5-연파랑, 6-보라, 7-노랑, 8-회색
lwd="숫자"선의 굵기
cex="숫자"점/문자의 굵기
pch=0, pch="문자"점의 모양 지정, 1-원, 2-삼각형, 3-+, 4-X, 5-마름모, 6-역삼각형, 7-네모 안에 X

함수: axis(), title(), legend()

axis() : 눈금 변경, x, y축을 사용자의 지정값으로 표시

axis(숫자,       # 1:x축 눈금, 2: y축 눈금 
     at=,  	    # 눈금을 표현하는 숫자벡터
     labels= )  # 각 눈금에 부여하는 이름
  • plot() 옵션:
    axes=F - x, y축을 표시하지 않음
  • tmag=2: 제목 등에 사용되는 문자의 확대율 지정

par(mfrow=c(1,2))
plot(c(120, 150, 100), type='o')              
axis(1, at=1:3, labels = c('FRI', 'SAT', 'SUN'))

plot(c(120, 150, 100), type='o', axes=F)  # 눈금에 디폴트(x,y축)값 제거
axis(1, at=1:3, labels = c('FRI', 'SAT', 'SUN')) 
axis(2, ylim=c(0,150))                    #기존의 y눈금값 유지 + 새로운 눈금값 추가

title() : 제목

title(main = "제목",  # 그래프 제목
	  sub = "제목",   # 그래프 서브 제목
	  col.main,      # 그래프 이름 색깔
	  xlab = "문자",  # x축 이름
      ylab = "문자",  # y축 이름
      cex.lab = 숫자,    # 점/문자의 굵기
      font.lab = 숫자 )  # 폰트 크기 
  • plot() 옵션:
    ann=F - x, y축 이름을 지정하지 않음

plot(c(75, 110, 35, 230, 190), type='o', col='red', ylim=c(0,250), axes=FALSE, ann=FALSE)
axis(1, at=1:5, lab=c("MOM", "TUE", "WED", "THU", "FRI"))
axis(2, ylim=c(0, 250))

title(main="FRUIT", font.main=4)
title(xlab="DAY", col.lab="black")
title(ylab="PRICE", col.lab="black")

legend() : 범례

data.frame(apple=c(100,210,300), banana=c(170,105, 130), mango=c(250,200,330))

plot(df1$apple, type='o', ylim=c(0,350), col=2, ann=F)
lines(df1$banana, type='o', col=3)
lines(df1$mango, type='o', col=4)

legend(2.5, 350, legend=c("apple", "banana", "mango"), cex=1, col=2:4, pch=1, lty=1)
# legend(x축 위치, y축 위치, 내용, cex=글자크기, col=색상, pch=크기, lty=선모양)

ex)

x, y축의 범위/이름, 그래프 이름 지정 및 최대 한계값 지정 그래프

x <- 1:3 ; y<- 3:1
plot(x, y, xlim=c(1,5), ylim=c(1,3), 
     xlab="X축 값", ylab="Y축 값", main="Plot Test",
     family="AppleGothic")
  • xlim, ylim : 인자를 사용해 수동으로 한계값 지정.
  • xlab, ylab : x축, y축 이름 지정.
  • main: 그래프 이름 지정.
  • family="AppleGothic : 맥의 경우, 한글 깨짐 현상으로 인해 글씨체 지정.



참고,
https://blog.naver.com/eatgs/221874583160
https://blog.naver.com/1stwook/220670083505

profile
ʚȉɞ

0개의 댓글