티스토리 뷰

R

[R] 데이터 시각화 - ggplot2

rimo (리모) 2022. 7. 4. 02:45

 

 

[R] 데이터 시각화 - 그래프 활용과 Plot

데이터를 분석하는 것 자체도 중요하지만 분석결과를 남들이 쉽게 이해할 수 있도록 전달하는 것 또한 중요합니다. 이를 위해 데이터 시각화와 관련 함수 및 패키지에 대해 다룹니다. Plot ( ) R에

munak.tistory.com

 

이전 글에 이어서 데이터 시각화를 위한 패키지에 대한  기본적인 내용을 다룹니다.

 

 


 

ggplot2

 

ggplot2는 데이터를 각 기하 객체의 미적 속성에 매핑하는 방법을 제공한다. 이를 통해 통계적인 시각화를 가능하게 하는 효과적인 방법을 제안할 수 있게 되었다. 또한 통계적인 데이터 변환이 필요하다면 그 변환까지 수행한다. 국소 시각화 기법을 지원해 각 데이터의 부분 데이터만 사용해 여러 개의 그래프를 그릴 수 있다.

 

 

 

 

 

 

 

 

- aes( )

 

먼저 데이터를 플로팅 하기 위해 데이터의 각 레코드를 그래픽 요소에 매핑할 필요가 있다.

이를 미적 요소 매핑이라고 한다. ggplot2의 문법에서는 aes함수가 이를 수행한다.

 

 

--> 위 코드에서는 aes를 이용해 x축에 length 컬럼, y축에 width 컬럼을 매칭시키고 colour에는 trt를 매칭시킨것을 확인할 수 있다.

--> 점의 크기나 모양은 따로 매핑값이 없음으로 디폴트 값으로 매칭된다 (기본값을 속이 꽉찬 크기 1인 점이다)

 

 

이러한 미적 매핑 후에 매핑된 데이터를 이용해 컴퓨터가 이해할 수 있는 이미지 포멧으로 변환하는 스케일링(Scaling) 작업이 진행된다.  (ggplot2에서는 gird 시스템을 사용하기 대문에 [0, 1] 사이의 값으로 스케일링 된다. )

 

 

정리하면 코드의 + 앞부분은 단지 데이터를 추가하고 미적 요소를 매핑하는 작업을, 뒷부분은 실제로 레이어를 추가해 colour(color) 별로 다르게 점을 찍는 작업을 한다.

 

 

 

 

 

 

 - geom_smooth()

 

추세전을 그린다.  맵핑변수와 인수를 어떻게 설정하느냐에 따라서 같은 데이터를 두고도 다른 추세선을 그릴 수 있다.

 

ex. geom_point()로 산점도를 먼저 그리고, geom_smooth()를 추가하여 추세선을 그린 예제.

 

 

 

 

 

 

ggplot2를 배울때 사용하기 좋은 diamonds 데이터를 사용해 여러 시각화를 진행합니다.

 

 

 

 

 

 

 

- x축으로 carat 열, y축으로 price 열 지정

 

 

--> 캐럿이 커질수록 가격도 비싸진다

 

 

 

 

 

 

 

- 추세선 추가하기

 

 

 

 

 

 

 

 

 

 

 

- geom_bar ( ) 

 

막대 그래프를 그린다. (geom_point가 산점도를 그리고 geom_bar가 막대그래프를 그리는 것을 보면 알겠지만 ggplot2는 여러 그래프에 대한 함수를 지원한다!)

 

 

 

 

 

 

 + stat_bin(  ) 을 통해서 그래프의 종류와 색상을 한번에 지정할 수도 있다.

++ geom_bar 또한 fill같은 속성을 가지고 있기 때문에 색상의 경우 fill 속성을 변경해 바꿀수도 있다.

 

 

 

 

 

 

 

 

- 누적 히스토그램 그리기

 

 

 

 

 

 

+ qplot 실습 (생략)

 

 

 

 

 

+ aes 활용

aes를 이용해 각각 크기, 색상, 모양, 선의 두께 등을 각각 매핑할 수 있다.

 

 

 

 

 

 

 

 

- labs( ), theme( ), scale 함수들

그래프의 여러 설정을 변경하거나 추가할 수 있다.

 

ex. 제목과 x축, y축을 지정해 설정하고 theme로 텍스트 색상 속성을 빨간색으로 지정하는 예제

 

 

 

 

 

 

 

ex. 배경색과 마진을 설정하는 예제

 

 

 

 

 

 

 

ex. scale_colour_manual을 사용해 Legend별 색상을 변경하는 예제

 

 

 

 

 

 

 

 

 

- geom_hline( ), geom_vline( )

plot에 각각 수평선과 수직선을 추가한다.

 

 

 

 

 

 

 

 

 

- coord_cartesian( )

xlim과 ylim 속성을 통해 축의 범위를 변경한다.

 

 

 

 

 

 

 

 

 

- coord_flip( )

x축과 y축을 서로 변경한다.

 

 

 

 

 

 

 

 

 

+ ggcorrplot( )

ggcorrplot함수를 사용해 상관관계를 분석한다.

 

 

 

 

 

 

 

 

 

+ geom_violin( )

바이올린 플롯을 그린다. (값의 분포를 확인할 수 있다.)

 

 

 

 

 

 

 

 

 

+ maps 

maps라이브러리와 USArrests데이터를 이용해 살인율을 계산해 plot에 나타내는 예제

 

 

 

arrests<-USArrests
names(arrests)<-tolower(names(arrests))
arrests$region <- tolower(rownames(USArrests))
head(arrests)


doInstall<-TRUE
toInstall<-c("maps", "ggplot2")
if(doInstall){install.packages(toInstall, repos = "http://cran.us.r-project.org")}
lapply(toInstall, libraray.only = TRUE)
library(ggplot2)
library(maps)


states<-map_data("state")
ds<-merge(states, arrests, sort=FALSE, by="region")
ggplot(ds,aes(long, lat, group= group, fill=murder/assault)) +
  geom_polygon()

 

 

 

 

 

 

 

 

[참고 자료]

 

https://blog.naver.com/PostList.naver?blogId=regenesis90&from=postList&categoryNo=24&parentCategoryNo=24

 

 

 

감사합니다.

 

 


 

 

 

2022년 AI분석을 위한 R통계교육의 수업내용을 정리한 글입니다.

 

공부한 내용을 복습/기록하기 위해 작성한 글이므로 내용에 오류가 있을 수 있습니다.

 

'R' 카테고리의 다른 글

[R] 데이터 시각화 - googleVis  (0) 2022.07.06
[R] 데이터 시각화 - ggmap  (0) 2022.07.05
[R] 데이터 시각화 - 그래프 활용과 Plot  (0) 2022.06.30
[R] 고급 통계  (0) 2022.06.30
[R] 기초 통계  (0) 2022.06.29
댓글
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Total
Today
Yesterday