데이터분석 전문가(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함수와 같이 쓰면 선그래프를 그려준다

 

제목 없음.jpg

 

4. 포인트 그래프

 

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

 

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

 

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

 

제목 없음.jpg

 

5. 스무스 그래프

 

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

 

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

 

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

 

제목 없음.jpg

 

 

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)

 

제목 없음.jpg

 

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별로 가로로 히스토그램을 출력해줌

 

제목 없음.jpg

 

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

 

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

 

제목 없음.jpg

 

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

 

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

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

제목 없음.jpg

 

색을 지정안하면 

 

> m + geom_histogram()

 

제목 없음.jpg

 

 

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까지로 제한하고 산점도를 그려준다

 

제목 없음.jpg

 

> 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사이로 변경

 

제목 없음.jpg

 

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

 

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

 

제목 없음.jpg

 

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

 

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

 

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

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

 

제목 없음.jpg

 

10. 막대그래프

 

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

> c+geom_bar()

 

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

 

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

 

제목 없음.jpg

 

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

 

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

 

제목 없음.jpg

 

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()

 

제목 없음.jpg

 

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번(짧은 점선)으로 지정

 

제목 없음.jpg

 

1번은 실선

 

제목 없음.jpg

 

2번은 선이 긴 점선

 

제목 없음.jpg

 

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

 

제목 없음.jpg

 

 

728x90