욱이의 냉철한 공부

[R, 시각화] 기본 그래프 그리기(막대 그래프) - barplot() 본문

데이터분석/R

[R, 시각화] 기본 그래프 그리기(막대 그래프) - barplot()

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 


1. 그래프 인자 알아보기

인자 설명
main = "메인 제목" 그래프 제목 설정
sub = "서브 제목" 그래프 서브 제목
xlab="문자", ylab="문자" X축, Y축에 사용할 이름
angle, density, col 막대를 칠하는 선분의 각도, 선분의 수, 선분의 색을 지정한다.
legend 범례지정
names 각 막대의 라벨을 정하는 문자열 벡터를 지정한다.
width 각 막대 사이의 상대적인 폭을 벡터로 지정한다.
space 각 만대 사이의 간격을 지정한다.
beside TRUE를 지정하면 각각의 값마다 막대를 그린다.
horize TRUE를 지정하면 막대를 옆으로 눕혀서 그린다.

 

 

2. 사용 예시  1 - 기본 확인하자

- 벡터를 받아들여 y축으로 표현하는 것을 확인 할 수 있다.

 

 

- 그래프는 빨간색 줄이다.

- 매트릭스를 받아들여 y축으로 표현하는 것을 확인할 수 있다.

- beside 인자를 통해 열마다 각각의 그래프를 그려준다.

- 사진에는 없지만 horize인자는 세로로 눕혀준다.

 

 

 

 

 

 

 

 

3. 사용예시 2 - 벡터를 받아들이자

 

- 벡터를 받아들여 y축으로 표현한다.

- 첫 번째 막대그래프는 단순 barplot(donguk) 이다.

- 두 번째 막대그래프는 x축에 이름도 집어넣고 막대 모양도 꾸며봤다.

- names.arg 인자는 각 x축 칸에 맞게 이름을 설정한다.

- border는 막대의 테두리 색을 설정한다.

- density는 막대 내부에 밀도를 그려 형상을 바꾼다.

 

barplot(donguk, names.arg=c("2014","2015","2016","2017","2018"), main="weight change", xlab="year", ylab="weight" , border="blue", density=c(10,30,50,30,10))

 

 

 

 

 

 

 

 

4. 사용예시  3 - 매트릭스를 받아들이자

 

 

- 메트릭스를 받아들여 y축으로 표현한다.

- names.arg 인자는 각 x축 칸에 맞게 이름을 설정한다.

- main, xlab, ylab 인자를 통하여 총제목, x축 제목, y축 제목 들을 설정 할 수 있다.

- beside 인자를 통해 열마다 각각의 그래프를 그려준다.

- border는 막대의 테두리 색을 설정한다. 여기서는 blue로 설정하였다.

- col로 통하여 막대 내부 색을 설정한다. 여기서는 rainbow함수를 사용하여 자동 무지개색으로 결정하였다.

- ylim인자를 통하여 y축 값 범위를 결정할 수 있다.

- legend함수를 사용하여 범례를 설정하였다. x축 좌표로 1, y축 좌표로 100에 위치하였다.

- cex는 글자 크기이며, fill은 범례 지정 그래프 색을 표현한다.

barplot(weight, names.arg=c("donguk","hansol"), main="weight change", xlab="year", ylab="weight"

, beside=T,border="blue", col=rainbow(5), ylim=(c(0,100)))

legend(1, 100, c("2014","2015","2016","2017","2018"), cex=0.8, fill=rainbow(5))

 

 

 

 

 

 

 

5. 사용예시  4 - 데이터프레임을 받아들이자

 

- 데이터프레임을 받아들여 y축으로 표현한다. 인구밀도 열을 y축으로 표현할 거기 때문에 d$인구밀도로 설정하여 불러온다.

- names.arg 인자는 각 x축 칸에 맞게 이름을 설정한다. d$국명으로 설정하여 국명 열을 차례로 불러온다.

- col로 통하여 막대 내부 색을 설정한다. 여기서는 "lightcyan" 색깔로 지정한다.

- cex.names 인자는 x축 각 칸 이름의 크기이다.

1이 기본값이며 여기서는 0.7이기 때문에 한국부터 중국까지 글자 크기가 꽤 작아진 것을 확인 할 수 있다.

- las인자는 x축 각 칸 이름의 기울기이다.

2는 세로이기 때문에 한국부터 중국까지 세로로 놓여진 것을 확인 할 수 있다.

- text는 막대에 y축 값(인구밀도)을 표현하게 한다.

x와 y는 각 값이 그려질 좌표값이다.

x에는 bp(그래프 그 자체)를 설정하여 각 x축 칸에 맞게 좌표를 설정하게 하였다.

y에는 d$인구밀도*0.9를 설정하여 막대 총 높이의 0.9 비율 지점에 값을 표현하도록 좌표를 설정하였다.

labels는 그려질 값을 나타내는 것이고 d$인구밀도로 설정하여 인구밀도 값이 표현하도록 설정하였다.

color는 값의 색이고, cex는 크기이다. 여기서는 빨간색 그리고 기본값 1보다 약간 적은 0.7로 설정하였다.

 

bp <- barplot(d$인구밀도, names.arg =d$국명, main = "국가별 인구밀도",col="lightcyan",cex.names=0.7, las=2)

text(x=bp, y=d$인구밀도*0.9,labels = d$인구밀도,col="red",cex=0.7)