욱이의 냉철한 공부

[R, 시각화, 패키지] ggplot 패키지 사용하여 이쁘게 그래프 그리기3 - geom_histogram(), 국소화, 다중plot 본문

데이터분석/R

[R, 시각화, 패키지] ggplot 패키지 사용하여 이쁘게 그래프 그리기3 - geom_histogram(), 국소화, 다중plot

냉철한 욱 2021. 6. 28. 06:13

 

=> geom_point()와 geom_smooth()는 여기서 확인하시면 됩니다.

https://warm-uk.tistory.com/75?category=810499 

 

[R, 시각화, 패키지] ggplot 패키지 사용하여 이쁘게 그래프 그리기1 - geom_point(), geom_smooth()

* 예시로 사용할 데이터 셋 mpg : 자동차 234종에 대한 데이터입니다. 총 234행 11열(변수)로 이루어져 있습니다. 변수명 내용 변수명 내용 manufacturer 제조회사 model 자동차 모델명 dispal 배기량 year 생

warm-uk.tistory.com

=> geom_bar()는 여기서 확인하시면 됩니다.

https://warm-uk.tistory.com/76?category=810499 

 

[R, 시각화, 패키지] ggplot 패키지 사용하여 이쁘게 그래프 그리기2 - geom_bar(), 막대그래프 응용

=> geom_bar()와 geom_smooth()는 여기서 확인하시면 됩니다. https://warm-uk.tistory.com/75?category=810499 [R, 시각화, 패키지] ggplot 패키지 사용하여 이쁘게 그래프 그리기1 - geom_point(), geom_smooth(..

warm-uk.tistory.com

 

 

* 예시로 사용할 데이터 셋

diamonds : ggplot2패키지 안에 포함된 데이터 셋입니다. 총 5만 4000행, 10열(변수)로 이루어져 있습니다.

변수명 내용 변수명 내용
price 가격 x 길이 (0–10.74mm)
carat 무게 y 너비 (0–58.9mm)
cut 컷팅의 가치 (Fair, Good, Very Good, Premium, Ideal) z 깊이 (0–31.8mm)
colour 다이아몬스 색상(J(가장 나쁜)- D(가장 좋은)) depth 깊이 비율 = z / mean(x, y)
clarity 깨끗함 (I1 (가장 나쁜), SI1, SI2, VS1, VS2, VVS1, VVS2, IF (가장 좋은)) table 가장 넓은 부분의 너비 대비 다이아몬드 꼭대기의 너비(43–95) <- 비율(%)로 추정됨

 


 

1. ggplot 패키지 설치 및 데이터 셋 확인

 

- ggplot2패키지는 ggplot패키지의 업데이트된 버젼이다.

- ggplot2패키지 내에 있는 mpg 데이터셋 객체를 불러와 데이터 프레임으로 만든다.

- ggplot2::diamonds 는 ggplot2에 들어있는 diamonds 데이터를 지칭하는 코드

- ::를 이용하면 특정 패키지에 들어 있는 함수나 데이터를 지정할 수 있다.

- diamonds 데이터 셋을 확인 해 본다

 

 

 

 

 

2. geom_histogram() - 히스토그램

- ggplot() 함수는 무슨 데이터를 사용 할지 정하고 그래프 그릴 준비를 활성화 한다고 생각하면 된다

- geom_histogram() 함수는 구체적으로 무엇을 그릴지 명령한다고 생각하면 된다.

- aes(미학요소)함수 가장 중요하다. x축, y축 및 색 등의 미학요소를 설정한다.

- mapping 인자는 ggplot() 함수에 입력하든, geom_bar() 함수에 입력하든 상관없다.

사용하는 함수들이 많아질 경우 ggplot()에 입력하는 것이 편리하다.

 

- 미학요소에서 y인자를 따로 설정하지 않으면 y는 자동으로 x에 의한 count값이 된다.

- #1은 인자 binwidth 1로 설정하였다. 막대 하나의 간격이 1로 설정된다. 간격 1의 count를 나타낸다.

- #2는 인자 binwidth 0.1로 설정하였다. 막대 하나의 간격이 0.1로 설정된다. 간격 0.1의 count를 나타낸다.

- #3은 인자 binwidth를 0.01로 설정하였다. 막대 하나의 간격이 0.01로 설정된다. 간격 0.01의 count를 나타낸다.

- #4는 인자 binwidth를 설정하지 않았다. 자동으로 초기값 30으로 설정된다.

- #5는 인자 binwidth를 500으로 설정하였다. 막대 하나의 간격이 500으로 설정된다.

미학요소에서 fill 인자 cut변수를 설정하였다. 즉 cut의 각각 값의 개수에 의하여 막대의 색이 달라진다.

 

 

 

 

 

 

3. geom_freqpoly()

geom_freqpoly()함수는 히스토그램을 선으로 연결시킨 그래프를 그린다.

- #1은 인자 binwidth를 500으로 설정하였다. 히스토그램에서 그대로 선으로 연결 시켰다고 보면 된다.

- #2는 인자 binwidth를 500으로 설정하였다. ..density..를 설정하여 밀도로 표현한다.

 

 

 

 

 

 

4. Faceting - 국소화

1) 개념

- Faceting은 추가 변수의 값에 따라 여러 개의 그래프를 그려서 변수의 값에 따른 차이를 눈에 보기좋게 확인하고자 하는 기능이다.

- 대표적으로 2가지 함수가 있다.

facet_wrap() 함수는 1d 형태로 그린다.

facet_wrap(~변수명)

- facet_grid() 함수는 행과 열의 2d 형태로 그린다.

facet_grid(행 변수명 ~ 열 변수명)

facet_grid(행 변수명 ~.)

facet_grid(.~열 변수명)

 

2) facet_wrap()

facet_wrap() 함수는 1d 형태로 그린다.

facet_wrap(~변수명)

cut의 값에 따라 그래프가 그려진다. cut가 총 5개 이기 때문에 그에 맞춰서 5개의 그래프가 그려진다.

norw 인자는 시각화 시키는 열의 개수이다. 2로 설정되었기 때문에 2열로 시각화 한다.

3) facet_grid()

facet_grid() 함수는 행과 열의 2d 형태로 그린다.

facet_grid(행 변수명 ~ 열 변수명)

facet_grid(행 변수명 ~.)

facet_grid(.~열 변수명)

- #1은 color와 cut으로 나누어진 그래프를 그려준다.

- #2은 color로 행방향으로 나누어진 그래프를 그려준다.

- #3은 cut으로 열방향으로 나누어진 그래프를 그려준다.

 

 

 

 

 

 

5. gridExtra 패키지 - grid.arrange()함수 - 다중 plot 그리기

- 기본 그래프 같은 경우는 par(mfrow = c(nrow,ncol))를 활용하였다. 아래 링크를 참고한다.

https://warm-uk.tistory.com/72?category=810499 

 

[R, 시각화] 기본 그래프 그리기(파이, 히스토그램, 박스그래프, 화면분할) - pie(), hist(), boxplot()

여러 패키지 함수들, 그래프 함수 인자들 다 기억할 수 없어요. 저는 사용 할 시기가 되면 서적에서 봤던 거, 배웠던 거 정리한 것을 찾아서 활용해요. 가장 중요한 것은 함수들과 인자들을 외우

warm-uk.tistory.com

- ggplot 같은 경우는 gridExtra 패키지가 필요하다.

- gridExtra패키지 grid.arrange() 함수를 활용한다.

- 그리기를 원하는 그래프를 차례대로 담은 후에 시각화 되기 원하는 행과 열을 설정하면 된다.

- 본 그래프는 2행 2열로 설정하였다.