Data Science/[강의정리] 시각화 (R)

[시각화] 4강 ggplot2

눈곱만큼도모름 2024. 4. 24. 10:34
728x90
반응형


?lims :앞에 물음표를 붙여서, 해당 함수의 메뉴얼을 볼 수 있다.

getwd() : 현재 디렉토리 확인. (리눅스에 pwd)

setwd() : 작업 디렉토리 설정가능. \\ 또는 /를 사용.
setwd('c:\\Users\\R_study')
setwd('c:/Users/R_study')
-> Work Directory는 Rstudio를 종료하면 헤제된다.

install.packages('ggplots')  : package install. 노란색 부분 원하는 패키지 입력.
Rstudio의 4사분면 방향에 보이는 Tools>Install Packages 메뉴에서도 가능

head(sah) : 5개열
tail(sah) : 아래서 5개열
colnames(sah) : 컬럼명

 


 ggplots의 기본 구조

ggplot(data, aes(x= ,y= )) + geom_함수()+
      스케일(scale) 함수 +
      좌표(coord) 함수 +
      분할(facet) 함수 +
      테마(theme) 함수

+ 를 통해서 내용을 추가 할수 있는 Layer구조 형태이다.

a <- ggplot(data, aes(x,y )) + geom_함수()
a + coord_cartesian(xlim=c(0,100))
형대로 변수이용해서 확장 가능



예제)

setwd("C:/Users/SYP/R/in_manuscript")
load("sah.RData")
library(ggplot2)

head(sah)

#결과
  sbp tobacco  ldl adiposity famhist typea obesity alcohol age chd    BMI.cat
1 160   12.00 5.73     23.11 Present    49   25.30   97.20  52   1 overweight
2 144    0.01 4.41     28.61  Absent    55   28.87    2.06  63   1 overweight
3 118    0.08 3.48     32.28 Present    52   29.14    3.81  46   0 overweight
4 170    7.50 6.41     38.03 Present    51   31.99   24.26  58   1      obese
5 134   13.60 3.50     27.78 Present    60   25.99   57.34  49   1 overweight
6 132    6.20 6.47     36.21 Present    62   30.77   14.14  45   0      obese
# 아래 3가지 형태 모두가능
ggplot(sah, aes(age, sbp)) + geom_point()
ggplot(data=sah, aes(x = age, y = sbp)) + geom_point()
ggplot(sah) + geom_point(aes(x = age, y = sbp))

 

data ggplot(data)

data=sah, sah 형태 모두가능

 

aes(x= ,y= ) ggplot(data, aes(x= ,y= )) 

(a,b) 혹은 (x=a,y=b) 형태 모두가능. 
아래와 같이 추가 정보 가능

color  색상 지정
ggplot(sah, aes(age, sbp, color = chd)) + geom_point()
chape  점의 모양 지정
ggplot(sah, aes(age, sbp, color = chd, shape =chd)) + geom_point()
size  점의 크기 지정
ggplot(sah, aes(age, sbp, color = chd, size =chd)) + geom_point()
alpha 투명도 지정 : 데이터 밀도를 시각화 할때 사용
ggplot(sah, aes(age, sbp, color = chd, alpha =chd)) + geom_point()
group 데잍터를 그룹화 하여 여러 그래프 요소를 구별 : 보통 선 그래프에서 사용
ggplot(sah, aes( ,  , group =  )) + geom_line()

 

geom_함수() ggplot(data, aes(x= ,y= )) + geom_함수()


그래프 2개를 겹치는 geom_point() +geom_smooth() 같은 형태도 가능

geom_bar() 막대 그래프
geom_col() 막대 그래프
geom_line() 선 그래프
geom_path() 선 그래프
geom_point() 산점도
geom_smooth() 평활곡선 그래프
geom_boxplot() 상자그림
geom_errorbar() 오차막대 그래프
geom_pointrange() 오차선 그래프
geom_histogram() 히스토그램
geom_density() 밀도곡선 그래프
geom_violin() 바이올린 플롯

 

scale ggplot(dataaes(x= ,y= )+ geom_함수() + scale()

+스케일(scale)  : 일부분의 범위만 보고자 할때 사용

scale_x_continuous(), scale_x_continuous()의 Argument

name 축 이름 설정  
scale_x_continuous(name = "Age")
limits 축 범위 설정  
scale_x_continuous(name = "Age")
expand 여백 조정 add : 일정 값만큼 여백 추가, mult : 상대적 비율만큼 여백추가 
scale_x_conriuous(expand=expansion(add=10)) 
breaks 눈금 위치 설정  
scale_x_continuous(breaks = c(10, 20, 30))
labels 눈금 라벨 변경 10.0 같은 소수점 형태로 변환하려면 '10.0' 같이 문자로 적어야
scale_x_continuous(breaks = c(10, 20, 30), labels = c("A", "B", "C"))
trans 축의 변환 "log"                       : log(x)
"log2"                     : log_2(x)
"log10"                    :log_10(x)
"sqrt"                      : 제곱근 변환을 적용(루트)
"reciprocal"            : 1/x
"reverse"                : 축을 반전. x의 값을 연순으로 나타나게변환
"probability"           : 확률 변환을 적용
"probability_inv"    : 역 확률 변환을 적용
scale_x_continuous(trans = "log")
position 축의 위치 설정 "top"                        : 축을 그래프의 상단에 배치
"bottom"                 : 축을 그래프의 하단에 배치
"left"                        : 축을 그래프의 좌측에 배치
"right"                      : 축을 그래프의 우측에 배치
scale_x_continuous(position = "top")

 

[ limits ]

 

ggplot(data, aes(x,y))
      + geom_point()
      + scale_x_continuous(limits=c(1,100)) # 연속형 범위 밖 결손처리
-------------------------------------------
      + scale_x_discrete(limits=c(1,100)) # 범주형 범위 밖 결손처리
-------------------------------------------
      + lims(x=c(0,100), y=c(0,100)) # 연속, 범주 다 사용가능
-------------------------------------------
      + xlim(c(0,100)) + ylim(c(0,100) # 연속, 범주 다 사용가능

--------------------------------------------
      + coord_cartesian(xlim=c(0,100)) # 결손처리 없이 사용가능

# 범위 밖 결손 처리로 그래프가 달라질 수도 있다.
scale_x_continuous( limits=c(0,100))  : 연속형에서 사용
scale_y_continuous( limits=c(0,100))
scale_x_discrete( limits=c(0,100))        : 범주형에서 사용 
scale_y_discrete( limits=c(0,100))

lims(x=c(0,100), y=c(0,100))
xlim(c(0,100)) + ylim(c(0,100))
--------------------------------------------------------------------
# 결손처리 없이 출력 범위만 조절 (coord함수에서 자세히)
coord_cartesian(xlim=c(0,100))

각 코드의 차이점

a <- ggplot(sah, aes(age,sbp)) +geom_point()

a + geom_smooth()
a + geom_smooth() + xlim(c(20, 40))
a + geom_smooth() + coord_cartesian (xlim=c(20, 40))


[ expand=expansion ]


scale함수에서 여백 추가하기 

scale_x_conriuous(expand=expansion(0)): 여분 없애기
scale_x_conriuous(expand=expansion(add=10)) : 여분 추가(적대적으로)
scale_x_conriuous(expand=expansion(mult=0.3)) : 여분 추가(상대적으로)

[ breaks, label ] : sale_x_conriuous()

scale함수에서 축 눈금 조정
sale_x_conriuous(breaks=c(25,30,45)) : 눈금 위치 지정
sale_x_conriuous(breaks=c(25,30,45),label=c('a','b','c')) : 눈금의 이름 지정

a <- ggplot(sah, aes(age,sbp)) +geom_point()

a + scale_x_continuous(breaks=c(20,40,60))
a + scale_x_continuous(breaks=c(20, 40, 60),labels=c("20.0", "40.0", "60.0"))

install.packages("gridExtra")
library(gridExtra)

# 그래프 그리기
plot1 <- ggplot(data = sah) +
  geom_point(aes(x = age, y = sbp, color = chd, shape = chd))

plot2 <- ggplot(data = sah) +
  geom_point(aes(x = age, y = sbp, color = chd, shape = chd)) +
  scale_x_continuous(breaks = c(30, 40, 50))

plot3 <- ggplot(data = sah) +
  geom_point(aes(x = age, y = sbp, color = chd, shape = chd)) +
  scale_x_continuous(breaks = c(30, 40, 50), labels = c('a', 'b', 'c'))

# 그래프 배열로 표시
grid.arrange(plot1, plot2, plot3, ncol = 3)


[ breaks, label ] : sale_x_discrete()

 

작성중... 

728x90
반응형

'Data Science > [강의정리] 시각화 (R)' 카테고리의 다른 글

[시각화] 2강 시각화의 방법2  (0) 2024.04.21