[R] 이산변수 시각화
이산변수란?
- > 정수단위로 나누어 측정할 수 있는 변수를 이야기 합니다. - 연속적이지 않은 변수
(예시, 돈 - 1원은 있지만 1.5원은 없음)
1) 막대차트 함수 - barplot() 형식 - barplot()
(1) 세로 막대차트
- 막대 차트 데이터 생성 및 세로 막대 차트 생성
chart_data <- c(305, 450, 320, 460, 330, 480, 380, 520) # 1차원 배열
names(chart_data) <- c("2019 1분기", "2020 1분기", "2019 2분기", "2020 2분기", "2019 3분기",
"2020 3분기", "2019 4분기", "2020 4분기")
str(chart_data) # chat_data dataset의 특징을 출력해줍니다.
chart_data
- 출력값 -
2019 1분기 2020 1분기 2019 2분기 2020 2분기 2019 3분기 2020 3분기 2019 4분기 2020 4분기
305 450 320 460 330 480 380 520
barplot(chart_data , ylim = c(0,600), col = rainbow(8),
xlab ="년도별 분기현황", ylab = "매출액(단위:만원)",
main = "2019년도 vs 2020년도 분기면 매출 현황 비교")
barplot : 막대 그래프로 시각화 해주는 함수
ylim : y축 값의 범위 / 지정하지 않으면 default값으로 함수에서 잡아주는데 직관력이 떨어지는 경우가 많습니ㅏ다.
일정 크기를 넣어주면 그 값에 맞춰서 보기 좋게 조정하여 출력해줍니다.
col : color 의 약자로 색을 넣어주는 함수 / rainbow(n) , n의 수만큼 서로 다른 색으로 출력합니다.
main : 타이틀을 넣어주는 매개변수]
xlab = x축 이름
ylab = y축 이름
(2) 가로 막대 차트
horiz : default = F(세로 막대 차트 출력) , T (가로 막대 차트 출력)
barplot(chart_data, xlim = c(0,600) , xlab = "매출액(단위:만원)", ylab = "년도별 분기현황",
col = rainbow(8), main = "2019년도 vs 2020년도 분기면 매출 현황 비교",
horiz = T, space = 1.5, cex.names = 0.8)
- 매개변수의 이름과 함께 데이터를 입력하게 되면 순서는 상관없습니다.
space : 막대 그래프 사이의 간격을 정의하는 매개변수
cex.naems : 텍스트의 크기를 바꿀 수 있는 매겨변수, default 값 = 1 / 0.8 입렵하면 80% 크기로 출력
추가 속성
1) red 와 blue 색상 4회반복
barplot(chart_data, xlim = c(0,600), xlab = "매출액(단위:만원)", ylab = "년도별 분기현황",
main = "2019년도 vs 2020년도 분기면 매출 현황 비교", horiz = T,
space = 1.5, cex.names = 0.8, col=rep(c(2,4),4))
rep : 색상 반복 / rep(c(2(빨강)-2019년 색상, 4(파랑)-2020년 색상), 4(반복))
- rep(c(n, n), n(반복)) : 검은색 (1), 빨간색(2), 초록색(3), 파란색(4), 하늘색(5), 자주색(6), 노란색(7)
2) 원하는 색상을 키워드를 이용해서 직접 넣기
barplot(chart_data, xlim = c(0,600), xlab = "매출액(단위:만원)", ylab = "년도별 분기현황",
main = "2019년도 vs 2020년도 분기면 매출 현황 비교", horiz = T, space = 1.5,
cex.names = 0.8, col=rep(c("green","yellow"),4))
col : rep(c("color_name","color_name"),반복수))
(3) 개별 차트 와 누적 차트 그리기
VADeaths 함수를 활용하여 누적 막대 차트에 대해서 알보겠습니다.
< VADeaths >
R에서 기본으로 제공되는 데이터 셋으로 1940 년 미국 버지니아주의 하위계층 사망비율을 기록한 데이터 셋이다 전체
5 행 4 열의 numeric 자료형의 matrix 자료구조를 갖고 있습니다.
변수구성
- Rural Male( 시골출신 남자) Urban Male( 도시출신 남자)
- RuralFemale( 시골출신 여자) Urban Female( 도시출신 여자)
Rural Male Rural Female Urban Male Urban Female
50-54 11.7 8.7 15.4 8.4
55-59 18.1 11.7 24.3 13.6
60-64 26.9 20.3 37.0 19.3
65-69 41.0 30.9 54.6 35.1
70-74 66.0 54.3 71.1 50.0
par(mfrow=c(1,2)) # 1행 2열 그래프 보기 (개별차트 + 누적 차트)
- 누적 차트 - 1컬럼 - 5 데이터 / 나이 별로 누적되어 각 컬럼별 특징을 시각화
barplot(VADeaths, col=rainbow(5), main = "미국 버지니아주 하위계층 사망 비율")
legend(0, 200, c("50-54","55-59","60-64","65-69","70-74"), cex = 0.8 , fill = rainbow(5))
- 개별 차트 -
barplot(VADeaths, col=rainbow(5), main = "미국 버지니아주 하위계층 사망 비율", beside = T)
legend(0, 71, c("50-54","55-59","60-64","65-69","70-74"), cex = 0.8 , fill = rainbow(5))
legend : (x, y, 수식) - 범례 작성
beside : default = F / 행의 값을 하의 막대에 넣어줍니다 , T : 각행의 데이터를 하나의 막대 그래프로 구별하여 출려해줍니다.
2) 점 차트 시각화 - dotchart()
chart_data
- 출력값 -
2019 1분기 2020 1분기 2019 2분기 2020 2분기 2019 3분기 2020 3분기 2019 4분기 2020 4분기
305 450 320 460 330 480 380 520
dotchart(chart_data, color = c("blue", "red"), xlab = "매출액(단위:만원)" ,
cex = 1.2, main="분기별 판매현환 점 차트 시각화화" ,
labels=names(chart_data), lcolor="purple", pch = 2:1)
color = c("blue"-2019년, "red"-2020년) 색상 넣기
xlab = x축 이름
cex = 레이블과 점의 크기 확대
main = title
labels = 기존에 데이터가 가지고 있는 컬럼의 이름을 반환하여 labels에 담아줍니다(y축).
names(chart_data) <- c(내용) : 컬럼 이름 넣기
lcolor : 줄의 색상 지정
pch(plotting character) : (n:n) : 원(○) - (1) , 삼각형(△) -(2), 십자가 모양 (+) - (3) , 출력되는 기호 지정
cex(character expansion) : 레이블과 점의 크기 확대
3) 원형 차트 시각화 - pie()
chart_data
- 출력값 -
2019 1분기 2020 1분기 2019 2분기 2020 2분기 2019 3분기 2020 3분기 2019 4분기 2020 4분기
305 450 320 460 330 480 380 520
pie(chart_data , labels = names(chart_data), border = 'blue', col=rainbow(8), cex=1.2)
title("2019~2020년도 분기별 매출 현황")
# pch(plotting character) : (n:n) : 원(○) - (1) , 삼각형(△) -(2), 십자가 모양 (+) - (3) , 출력되는 기호 지정
# cex(character expansion) : 레이블과 점의 크기 확대