데이터분석 전문가(ADP)를 위한 R프로그래밍 시각화편1

1. 패키지 설치

 

ggplot2 패키지는 다양한 시각화 그래프를 지원

 

install.packages('ggplot2')는 ggplot2 패키지를 설치

library(ggplot2)는 ggplot2의 내장 데이터 및 함수를 활용하기 위해 라이브러리를 활성화 시킴

 

install.packages에는 ''가 들어갈 수 있지만 (안들어가도 됨) library에는 ''가 들어가면 안된다

 

> install.packages('ggplot2')
Installing package into ‘/cloud/lib/x86_64-pc-linux-gnu-library/4.1’
(as ‘lib’ is unspecified)
trying URL 'http://rspm/default/__linux__/focal/latest/src/contrib/ggplot2_3.3.5.tar.gz'
Content type 'application/x-gzip' length 4113418 bytes (3.9 MB)
==================================================
downloaded 3.9 MB

* installing *binary* package ‘ggplot2’ ...
* DONE (ggplot2)

The downloaded source packages are in
	‘/tmp/RtmpumuWw5/downloaded_packages’
    
> library(ggplot2)

RStudio Community is a great place to get help: https://community.rstudio.com/c/tidyverse

Attaching package: ‘ggplot2’

The following object is masked from ‘package:NLP’:

    annotate

 

2. 데이터 확인

 

data(ChickWeight)로 ChickWeight 데이터를 불러와서 ChickWeight 변수에 저장함

 

head(ChickWeight)를 하면 상위 6줄의 데이터를 보여줌

 

> data(ChickWeight)

> head(ChickWeight)
  weight Time Chick Diet
1     42    0     1    1
2     51    2     1    1
3     59    4     1    1
4     64    6     1    1
5     76    8     1    1
6     93   10     1    1

 

3. 기본 XY 그래프

> ggplot(ChickWeight, aes(x=Time, y=weight, colour=Diet, group=Chick))+geom_line()

 

aes(x=, y=, colour=, group=)

 

x에 x축 변수, y에 y축 변수, colour에 어떤 변수별로 색깔을 구분하여 그래프를 그릴지, group로 지정한 변수의 값별로 group을 지어 그래프를 그린다

 

geom_line()는 ggplot함수와 같이 쓰면 선그래프를 그려준다

 

 

4. 포인트 그래프

 

> h <- ggplot(ChickWeight, aes(x=Time, y=weight, colour=Diet))
> h+geom_point(alpha=0.3)

 

geom_point()는 ggplot함수와 같이 써서 포인트 그래프를 그려준다

 

Diet에 따라 점의 투명도와 사이즈를 지정하여 점으로 출력해주는데 alpha는 투명도를 지정하는 옵션

 

 

5. 스무스 그래프

 

> h <- ggplot(ChickWeight, aes(x=Time, y=weight, colour=Diet))
> h+geom_smooth(alpha=0.4, size=3)

 

geom_smooth()는 ggplot함수와 같이 써서 스무스 그래프를 그려준다

 

그래프를 선 그래프보다 조금 더 명확하게 구분할 수 있도록 선의 영역과 평균값 선을 주로 표시해줌

 

 

 

6. 여러 그래프 동시에 표현

 

ggplot함수에 geom_point(), geom_smooth() 등을 계속 더하면 여러 그래프를 동시에 표현할 수 있다

 

> ggplot(ChickWeight, aes(x=Time, y=weight, colour=Diet))+geom_point(alpha=0.3)+geom_smooth(alpha=0.2, size=1)

 

 

7. 히스토그램

 

> ggplot(subset(ChickWeight, Time=21), aes(x=weight, fill=Diet))+
geom_histogram(colour='black', binwidth=50)+facet_grid(Diet~.)

 

subset(ChickWeight, Time=21)은 ChickWeight데이터에서 Time=21인 행만 선택하는 함수

 

geom_histogram(colour='black', binwidth=50)은

 

colour='black'은 막대 테두리의 색상을 black로 지정, binwidth=50은 구간의 weight 간격을 50으로 설정

 

facet_grid(Diet~.)은 Diet별로 가로로 히스토그램을 출력해줌

 

 

반면 facet_grid(.~Diet)를 하면 Diet별로 세로로 히스토그램을 출력함

 

> ggplot(subset(ChickWeight, Time=21), aes(x=weight, fill=Diet))+
geom_histogram(colour='black', binwidth=50)+facet_grid(.~Diet)

 

 

geom_histogram(aes(fill=..count..))으로 fill=에 지정한 변수에 대해 색깔별로 구별하여 그려준다

 

> m <- ggplot(movies, aes(x=rating))

> m + geom_histogram(aes(fill=..count..))

 

색을 지정안하면 

 

> m + geom_histogram()

 

 

 

8. 산점도

 

> data(mtcars)

> head(mtcars)
                   mpg cyl disp  hp drat    wt  qsec vs am gear carb
Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1

> p = qplot(wt,mpg,colour=hp,data=mtcars)
> p+coord_cartesian(ylim=c(0,40))

 

qplot과 함께 쓴 coord_cartesian(ylim=c(0,40))으로 하면 y축의 범위를 0부터 40까지로 제한하고 산점도를 그려준다

 

 

> p = qplot(wt,mpg,colour=hp,data=mtcars)
> p+scale_colour_continuous(breaks=c(100,300))

 

scale_colour_continuous(breaks=c(100,300))은 colour 옵션으로 지정한 변수 hp의 범위를 100에서 300사이로 변경

 

 

> p = qplot(wt,mpg,colour=hp,data=mtcars)
> p+guides(colour='colourbar')

 

guides(colour='colourbar')은 colour 옵션으로 지정한 변수 hp의 수치에 따른 색의 범위를 알려준다

 

 

9. 데이터를 치환하여 일부분만 그리기

 

데이터 건수가 너무 많은 경우 데이터의 일부분만 m으로 가져와서

 

qplot으로 지정한 변수 p에 대해 p%+%m을 실행하면 일부분 데이터만 가지고 산점도를 그려줌

> p = qplot(wt,mpg,colour=hp,data=mtcars)
> m <- mtcars[1:10,]
> p%+%m

 

 

10. 막대그래프

 

> c <- ggplot(mtcars, aes(factor(cyl)))

> c+geom_bar()

 

cyl같은 범주형 변수를 factor()로 factor로 전환해서 범주화해서 넣는다

 

ggplot에 geom_bar()를 더해서 factor별로 막대그래프를 그려줌

 

 

geom_bar()안에 fill=은 막대의 내부 색상을 지정해주고 colour=은 막대의 테두리 색상을 지정해준다

 

> c <- ggplot(mtcars, aes(factor(cyl)))
> c + geom_bar(fill='white', colour='red')

 

 

11. 선 그래프

 

ggplot에 geom_line()을 더해주면 선 그래프를 그려준다

 

> data(economics)

> head(economics)
# A tibble: 6 × 6
  date         pce    pop psavert uempmed unemploy
  <date>     <dbl>  <dbl>   <dbl>   <dbl>    <dbl>
1 1967-07-01  507. 198712    12.6     4.5     2944
2 1967-08-01  510. 198911    12.6     4.7     2945
3 1967-09-01  516. 199113    11.9     4.6     2958
4 1967-10-01  512. 199311    12.9     4.9     3143
5 1967-11-01  517. 199498    12.8     4.7     3066
6 1967-12-01  525. 199657    11.8     4.8     3018

> b <- ggplot(economics, aes(x=date, y=unemploy))

> b + geom_line()

 

 

geom_line()에 다양한 옵션을 지정할 수 있다

 

b <- ggplot(economics, aes(x=date, y=unemploy))
> b + geom_line(colour='blue',size=3, linetype=3)

 

colour='blue'하면 선의 색을 blue로 지정하고

 

size=3으로 하면 선의 굵기를 3으로 지정하고

 

linetype=3은 선의 종류를 3번(짧은 점선)으로 지정

 

 

1번은 실선

 

 

2번은 선이 긴 점선

 

 

4번은 선이 길고 짧음이 반복되는 점선

 

 

 

TAGS.

Comments