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번은 선이 길고 짧음이 반복되는 점선

'Visualization' 카테고리의 다른 글
데이터분석 전문가(ADP)를 위한 shiny를 활용한 R프로그래밍 시각화 (0) | 2022.02.21 |
---|---|
데이터분석 전문가(ADP)를 위한 R프로그래밍 시각화편4 (0) | 2022.02.20 |
데이터분석 전문가(ADP)를 위한 R프로그래밍 시각화편3 (0) | 2022.02.19 |
데이터분석 전문가(ADP)를 위한 R프로그래밍 시각화편2 (0) | 2022.02.19 |
seaborn에서 사용할 수 있는 그래프들 (0) | 2022.02.07 |