욱이의 냉철한 공부

[R, 시각화] 기본 그래프 그리기(산점도,꺽은선) - plot() 본문

데이터분석/R

[R, 시각화] 기본 그래프 그리기(산점도,꺽은선) - plot()

냉철한 욱 2021. 6. 28. 04:54

여러 패키지 함수들, 그래프 함수 인자들 다 기억할 수 없어요.

저는 사용 할 시기가 되면 서적에서 봤던 거, 배웠던 거 정리한 것을 찾아서 활용해요.

가장 중요한 것은 함수들과 인자들을 외우는 것이 아니라,

어떻게 활용하는지 이해하는 것이 중요해요 ~!!

사용하고 싶은 함수들을 빨리 찾아서 빨리 사용하기 위해서이죠!

그중에서 그래프 함수들을 사용할 경우 저는 중요하게 생각하는 부분이 

어떤 데이터 타입이 들어가는지에요~!

벡터형태, 테이블형태, 메트릭스형태, 데이터프레임형태가

함수의 x축 y축에 어떻게 맞춰서 들어가는 것에 대한 이해가 그래프 함수 활용의 출발이라고 생각해요


 

 

 


 

 

 

1. 그래프 인자 알아보기

 

plot(y축 데이터, 옵션)

plot(x축 데이터, y축 데이터, 옵션)

산점도, 꺽은선 등 다양한 그래프 그릴 수 있다.

인자 설명
main = "메인 제목" 그래프 제목 설정
sub = "서브 제목" 그래프 서브 제목
xlab="문자", ylab="문자" X축, Y축에 사용할 이름
ann=F X, Y 축 제목을 지정하지 않는다.
axes=F X, Y 축을 표시하지 않는다
axis X, Y 축을 사용자의 지정값으로 표시
type="p" 그래프 타입선택
lty="dashed" 선의 모양 선택
col=숫자, col="blue" 기호의 색상
숫자 또는 문자로 지정할 수 있다.
1:검정, 2:빨강, 3:초록, 4:파랑, 5:연파랑, 6:보라, 7:노랑, 8:회색
pch=숫자, pch="+" 점의 모양을 지정한다.
숫자 또는 문자로 지정할 수 있다.
bg="blue" 그래프의 배경색 지정한다.
lwd=숫자 선을 그릴 때 선의 굵기를 지정한다.
cex=숫자 점이나 문자를 그릴 때 굵기를 지정한다.
기본값은 1이며, 숫자가 작을수록 점의 크기가 비례하여 작아지고, 클수록 점의 크기가 비례해 커진다.
xlim=c(), ylim=c() X, Y 축의 값의 범위를 지정한다.

 

* type

type="p" : 점 모양 그래프(기본값)

type="l" : 선 모양 그래프, 꺽은선 그래프

type="b" : 점과 선 모양 그래프

type="c" : "b"에서 점을 생략한 모양

type="o" : 점과 선을 중첩해서 그린 그래프

type="h" : 각 점에서 x축 까지의 수직선 그래프

type="s" : 왼쪽값을 기초로 계단모양으로 연결한 그래프

type="S" : 오른쪽 값을 기초로 계단모양으로 연결한 그래프

type="n" : 축 만 그리고 그래프는 그리지 않는다.

 

* lty

lty=0 or lty="blank" : 투명선

lty=1 or lty="solid" : 실선

lty=2 or lty="dashed" : 대쉬선

lty=3 or lty="dotted" : 점선

lty=4 or lty="dotdash" : 점선과 대쉬선

lty=5 or lty="longdash" : 긴 대쉬선

lty=6 or lty="twodash" : 2개의 대쉬선

 

 

 

 

2. 사용 예시 1

- 벡터데이터타입 투입

- plot(x축 데이터, y축 데이터, 옵션)

 

 

1) 데이터 설정

- 벡터로 집어넣는다.

year<-c("2014","2015","2016","2017","2018")

donguk <- c(65,66,64,68,72)

 

2) 그래프(꺽은선) 그린다.

- 원하는 인자들 집어 넣으면 된다.

- x축, y축 데이터 따로 설정해야 하는 것을 주의 깊게 확인한다.

plot(year,donguk,main="weight change",xlab="year",ylab="weihgt",type="o",col="red")

 

 

 

 

 

3. 사용 예시 2 : 벡터데이터타입 투입

- 벡터데이터타입 투입

- plot(y축 데이터, 옵션)

- 추후에 x축, y축 따로 설정하고, 다른 그래프 추가 시킨다.

 

 

1) 데이터 설정

- 벡터로 집어넣는다.

donguk <- c(65,66,64,68,72)

hansol <- c(77,82,85,84,90)

 

2) donguk의 그래프(꺽은선)만 그린다.

- 그래프 밑그림을 그리는 과정

- axes=F, ann=F로 추후에 x축, y축을 계속 추가한다는 것을 알 수 있다.

plot(donguk, type="o", col="red", ylim=c(50,100), axes=F,ann=F)

 

3) x축과 y축 그린다.

- axis에서 1은 x축이고 2는 y축이다.

- at:1:5 는 5칸으로 나눈다는 것이고 lab은 각 칸의 이름이다.

axis(1, at=1:5, lab=c("2014","2015","2016","2017","2018"))

axis(2, ylim=c(0,100))

 

4) 그래프 전체, 축의 이름 지정한다.

title(main="weight change", col.main="red", font.main=4)

title(xlab="year", col.lab="black")

title(ylab="weight", col.lab="blue")

 

5) 중첩해서 그래프 하나 더 그린다. hansol

lines(hansol, type="o", pch=21, col="blue", lty=2)

 

6) 그래프에 범례 설정

- 4는 x축 좌표로 4번째 칸에 설정한다.

- 100은 y축 좌표로 100에 위치한다.

legend(4,100,c("donguk","hansol"),cex=0.8, col=c("red","blue"), pch=21,lty=1:2)

 

 

 

 

 

 

 

4. 사용예시3 : 데이터프레임 타입 데이터 투입

- 데이터프레임타입 투입

- plot(y축 데이터, 옵션)

- 추후에 다른 그래프 추가 시킨다. : lines함수 사용하여 qsec 추가 시킨다.

 

plot(mtcars$mpg,type="o", col="red")

lines(mtcars$qsec, type="o", pch=21, col="green", lty=2)

 

 

 

 

 

5. 사용예시4 : 데이터프레임 타입 데이터 투입

- 출저 : R까기

- 데이터프레임타입 투입

- plot(y축 데이터, 옵션)

- 추후에 x축, y축 따로 설정하고, 다른 그래프 추가 시킨다.

 

1) 데이터 설정

- 데이터프레임 열로 집어넣는다.

- 필요한 데이터 read.csv로 불러온다

 

2) 2011년도만 그래프(꺽은선)만 그린다.

- 그래프 밑그림을 그리는 과정

- axes=F로 추후에 x축, y축을 계속 추가한다는 것을 알 수 있다.

plot(a,axes = F,type = "o",col="red",main="2호선 승객수")

 

3) x축과 y축 그린다.

- axis에서 1은 x축이고 2는 y축이다.

- at:1:50 는 50칸으로 나눈다는 것이다.

- lab은 각 역의 이름으로 벡터로 들어오는 것에 주의한다.

- las는 x축, y축 변수이름들의 기울기이다. 2는 세로로 설정한다.

강남부터 도림천까지 전부 세로로 되있는 것 확인할 수 있다.

axis(1,at=1:50,lab=c(f$역명),las=2)

axis(2,las=1)

 

4) 그래프 전체, 축의 이름 지정한다.

- abline은 수평, 수직선이다. h는 가로 좌표, v는 세로 좌표이다.

abline(h=c(25000,50000,100000,150000,200000,250000),v=c(5,10,15,20,25,30,35,40,45),lty=2)

lines(b,col="blue",type="o")

lines(c,col="green",type="o")

 

5) 그래프에 범례 설정

- 40는 x축 좌표로 40번째 칸에 설정한다.

- 200000은 y축 좌표로 200000에 위치한다.

colors<-c("red","blue","green")

legend(40,200000,c("2011년","2012년","2013년"),cex=0.8,col=colors,lty=2,lwd=1,fill="white",bg="white")