본문 바로가기

배우기/복습노트[R과 분석]

[복습] R(programming language) 시각화(1)(선그래프) + 하루끝(20231208)

728x90
반응형

시각화에는 기본 시각화 함수와 ggplot2 패키지가 있다.

우선 기본 시각화 함수로 여러 그래프를 출력해보도록 하겠다.

 

1. 선 그래프(산점도): 분포를 확인하거나 x축과 y축의 상관관계를 시각화하는 기법 중 하나로, 고른 분포를 띄는지, 특정한 분포를 보이는지, x와 y가 어떤 관계를 보이는지 등을 알 수 있다.

 

plot(x,                             # x축 좌표

       y= NULL,                 # y축 좌표

       type ='p',                 # 그래프 타입(p: 산점도, l: 선그래프, ....)

       xlim = NULL,            # x축 좌표 범위(예: 1~100중 50~60만 보고 싶을 때)

       ylim = NULL,            # y축 좌표 범위(예: 1~100중 50~60만 보고 싶을 때) 

       log = '',                     # y축 좌표를 log로 쓸 것인가

       main = NULL,           # main 제목

       sub = NULL,            # sub 제목

       xlab = NULL,           # x축 제목

       ylab = NULL,           # y축 제목

       ann = par('ann'),      # 축 제목 출력 여부

       axes = TRUE,           # 축 출력 여부

        ...)

 

dev.new() 하면 그래픽 새 창이 활성화 되며

아무 옵션없이 plot을 그리면 산점도가 출력된다.

 

 

 

cex 옵션을 주면 점 크기가 달라진다.

 

 

 

pch는 점 모양을 바꾸며, point 함수 메뉴얼을 보면 점 모양을 고를 수 있다.

 

col 옵션으로 점 색을 바꿀 수 있다.

영문으로 색 이름을 적어도 되고, R 내장의 색 번호를 적어도 된다. 그리고 색 코드를 넣으면 좀 더 다채롭게 바꿀 수 있다.

 

 

type 옵션으로 선 그래프로 바꿀 수 있다.

 

 

 

 

 

type 옵션을 o로 바꾸면 점도 함께 출력된다.

 

 

 

선 그래프 상태에서 lwd 옵션으로 선의 굵기를 바꿀 수 있다.

여기까지 벡터의 선그래프 출력 방법이었다.

 

 

아래부터는 데이터 프레임의 비교 선 그래프 출력이다.

 

데이터 프레임의 비교 선 그래프

 

googleVis::Fruits 데이터를 dcast하여 그래프 출력에 용이하도록 wide형 데이터로 변경한 뒤에 위와 같이 옵션을 주어 아래처럼 그래프를 나타내었다.

 

 

 

범례(legend) : 비교 시각화의 각 범주 class를 설명하는 부분으로, 비교 시각화는 수치형 뿐만 아니라 범주형 데이터에서도 가능하다.

옵션은 아래를 참고하자.

 

legend(x,                            # x축 좌표(범례 시작 부분) 

       y= NULL,                     # y축 좌표(범례 끝 부분)

       legend,                       # 각 범주 class 값

       fill=NULL,                    # 막대그래프 범례 출력시 채울 색. 막대그래프 출력 시 필수

       col = par('col'),             # 각 class를 구분할 색

       border = 'black',           # 테두리

       lty,                                 # 선 종류(line type)선 그래프 범례 출력 시 필수

       lwd,                               # 선 두께

       pch,                              # 점 종류(산점도 범례 출력 시 필수)

       title = NULL,                 # 범례 제목

       title.col = text.col[1],      # 범례 제목 색

       totle.adj=0.5,                 # 범례 제목 좌우 위치

       totle.cex = cex[1],          # 범례 제목 글자 크기

       title.font = text.font[1],   # 범례 제목 폰트

       ...)

 

위 Fruit2 데이터에 범례를 넣어보았다.

 

 

 

 

축 눈금

axis(side = ,         # 방향(x축: 1, y축: 2)

          at = ,           # 눈금 수

      labels = )       # 눈금 값

 

축 눈금은 위의 옵션으로 나타낼 수 있다.

 

위의 비교 선 그래프에 x축 눈금을 설정하여보자.

 

위처럼 두 가지 방법이 있는데, sol1로 그리면 , 

 

이런 축의 그래프가 나오고,  sol 2로 그리면

 

이렇게 출력된다. 나는 sol2 가 좋은 것 같다.

 

 

 

배경색 바꾸기

배경색은 dev.new() 아래에 par()를 추가해주면 된다.

 

색을 연보라색으로 바꾸어보았다.

 

 

728x90

 

 

연습문제를 하나 풀어보겠다.

data.csv파일을 읽고 월별 총 구직자수 변화 추이를 각 연도별로 비교 시각화 하여라.

 

 

위 문제도 long data를 wide 형으로 바꾼 뒤에 옵션을 넣어 그렸다.

많은 그래프를 그리는 경우 lines 가 여러 줄 들어가는데 이때 for문으로 처리가 가능하다고 하여 for문을 적용해서도 테스트 하였다.

 

for (i in 2:5) {
  lines(data2[,i], type = 'o', col=col1[i])
}

 

 

 

 

 

 

글꼴 변경

글꼴은 google font 사용이 가능하며 

https://fonts.google.com/

에서 마음에 드는 글꼴 이름을 골라 R 스크립트 창에서 사용하면 된다.

 

install.packages('showtext')

library(showtext)

 

showtext 패키지를 다운받아 로드한 뒤에,

 

font_add_google(name = ,       # 폰트이름(실제이름): 다운받을 폰트 실제 명
                family= )                   # 내가 지정한 이름(저장명): R에서 사용할 폰트명(임의 설정, 생략시 원본 이름과 동일)

 

위와 같이 지정하면 된다.

 

 

나는 위와 같은 폰트를 골라 실행하였다.

 

그러면 curl 이라는 패키지 실행 요청 메시지가 뜰 거고 해당 라이브러리까지 로드하면 되겠다.

install.packages('curl')
library(curl)

그리고 showtext_auto() 를 실행하면 다운받은 폰트가 적용된다.

실제 적용된 것을 확인하려면 그래픽 창을 닫고 다시 실행하면 된다.

 

 

위처럼 title을 넣어보면 폰트가 적용된 것을 확인할 수 있다.

 

 

 

색 표현

색을 표현할 수 있는 방법에는 세 가지가 있다.

1) 기본 색 사용

기본적으로 내장되어 있는 색을 사용하는 것으로 1은 검정, 2는 빨강 3은 초록... 으로 설정되어있다.

기본 색은 보통 분석시 분석 결과를 먼저 파악하기 위하여 사용되는데 iris 예시를 확인해보겠다.

 

위 코드에서는 plot에 col 옵션으로 iris$Species 만 넣었는데 아래처럼 색이 지정되어 출력되었다. 왜 그럴까.

 

R에서는 분류분석 시 지금처럼 Y가 factor일 경우가 유리하다. 위와 같이 시각화가 가능하기 때문이다. 각각의 class 별로 서로 다른 color를 볼 수 있다.

fator로 숫자가 들어가기 때문에 색 분류가 된 것이다. 그러므로 col에 숫자 전달 시 그에 매칭되는 색 표현이 가능한 것이다.

 

 

2) 사용자 정의 팔레트 구성

사용자가 직접 원하는 색의 벡터(팔레트)를 구성한다. 색상표를 사용하면 보다 다채로운 색의 표현이 가능하다.

Line 1 처럼 사용자 정의 팔레트를 구성하였고, Line3처럼 지정하여, Line 8처럼 나타내었다.

3) 외부 패키지를 사용한 팔레트 구성

install.packages('colorspace')

library(colorspace)

 

위와 같이 colorspace를 설치 후 로드한다.

 

그리고 위 코드를 실행해주면 아래와 같은 팔레트 예시들이 나온다.

이 팔레트 사용 방법은 다음과 같다.

나는 Sequential 파트의 BluGrn 색상을 사용하고 싶다.

 

 

Line 4처럼 하면 더 크게  Sequential 의 색상표를 확인할 수 있다.

 

 

나는 sequential에서 골랐기 때문에 Line 11처럼 옵션을 넣었고, 원하는 색이 qualitative나 diverging에 있다면 Line 7, 8로 각각 사용하면 될 것이다.

그 다음에 Line 15처럼 c1을 each 로 50번 반복한 이유는, 나는 3가지 색을 선택했는데 Species의 factor가 3가지이기 때문이다. factor 3가지가 50개씩 총 150 개로 이루어져 있는데, 만일 times 옵션이 들어가면 색상은 1,2,3,1,2,3,1,2,3 으로 들어가서 분석 결과가 이상하게 나온다.

데이터는 11111111111111~50개, 22222222222~50개, 33333333~50개의 형태로 존재하기 때문에 each 옵션을 사용하여 같은 색이 50개씩 나열되도록 설정하였다.

 

 

여러 그래프 출력

 

par(mfrow =c(1,2)) 함수를 주면 다음과 같이 창이 뜨고, 두 개의 plot을 넣어 그래프를 그릴 수 있다.

 

 

 

 

눈금 회전

 

 

네 개의 plot을 비교해보면 눈금 회전이 네 가지 다 다른 것을 확인할 수 있다.

이 중에 원하는 눈금 방향을 정해서 사용하면 될 것 같다.

 

 

 

 

다음주에는 ggplot2 패키지로 시각화 하는 걸 배울 것 같다.

 

728x90
반응형