Guide :: Scaling

Published by onesixx on

 

Scaling(스케일링) 작업 이란

데이터 영역 –Mapping—> 시각적요소

x, y축 데이터(Data)를 시각적 표현(Aesthetic object )으로 매핑/ 변환하는 방법. 
기본적으로 자동으로 Scaling되지만, override하는 방법으로 수동으로 설정이 가능하다.

  시각적요소 변수유형에 따른 Scale명
scale _  color, shape, x, y   continuous, discrete, brewer, gradient

 

시각적요소 –> 데이터

축/ 범례 제공. 

예제>

 Data를 색상(color, shape, size, position)으로 표현 , 즉 Data구간에 따른 컬러를 어떻게 매핑할 것인가가 스케일링이다.

x y color
xx yy type
1 1 A
2 2 B
3 3 A
4 4 B
dd <- data.frame( xx=c(1:4), yy=c(1:4), type=as.factor(c("A","B")))

p <- dd %>% ggplot(aes(xx, yy)) + 
          geom_point(aes(color=type), size=6)

 

 

자동으로 설정

color 값은 사람이 구분하기 쉬운 색상으로 자동으로 매핑


Plot의 모든 시각적요소에는 Scale이 필요하다 => 생략된 기본척도

scale_x_continuous() + scale_y_continuous() + scale_color_discrete()

p + scale_x_continuous() +  scale_y_continuous() +
    scale_color_discrete()

 

 

수동으로 설정

기본값을 Override 한다.

 

P + scale_x_continuous("XX") + scale_y_continuous("YY")
p + scale_color_manual(values=c("black","purple"))
또는
p + scale_color_brewer()

 

 

https://www.sixhat.net/r-tip-ggplot-axis-labels.html
http://www.sthda.com/english/wiki/ggplot2-title-main-axis-and-legend-titles\

Scale의 Arguments

Legend는 Data와 Aes를 정확히 매핑만 하면 자동으로 생성된다. (원하는 legend가 나오지 않는다면  data가 tidy한지 확인해 보자)

  name breaks labels
Axis 축 이름 눈금/ Grid 선 눈금 / 레이블
Legend 제목 Key 색 모양 Key 레이블

 

name(Axis label/ Legend title)   => labs()

p + scale_x_continuous(quote(mc^2)) + scale_y_continuous("y Axis") +
    scale_color_discrete("Type color")

축 이름 이나 범례 제목은 변경할 일이 많아 특별히 xlab(), ylab(), labs()가 있다.

p + xlab(quote(mc^2)) + ylab("y Axis \n YY") + 
    labs(color="Type color")

한번에 설정 labs()

p + labs(x=quote(mc^2), y="y Axis", color="Type color")

제거하려면, NULL사용

p + labs(x=NULL, y=NULL) + 
                                                          scale_color_discrete(breaks=NULL)p + labs(x=NULL, y=NULL)

 

breaks + labels  (Axis)  

 

p + labs(x=NULL, y=NULL) + scale_color_discrete(breaks=NULL) +
    scale_x_continuous(breaks=c(1.5, 3.5), labels=c("1.5k", "3.5k"))

 

 

 

 

Data와 Geom 을 연결하는 함수 

Data와 Geom을 요소를 바로 연결해주는 aes()과 달리,  Geom에 관련된 Data의 Scale을 동적으로 조정한다.

Scale
함수
scale_alpha   투명도  = scale_alpha_continuous
   scale_alpha_discrete
scale_color _brewer 색상값 지정, 색상패턴(colorbrewer.org)  
 _gradient 두색을 썩어 그라데이션 색상적용 = scale_color_continuous
   scale_color_distiller
   scale_color_gradient2
   scale_color_discrete
 _grey  흑백  
scale_fill _brewer   채움값 지정   
_gradient  두색을 썩어 그라데이션 채움적용

= scale_fill_continuous
   scale_fill_gradient2
 _grey
_hue
흑백   
scale_identity    스케일 없이 적용 scale_alpha_identity
scale_color_identity

scale_fill_identity…
scale_manual   사용자 지정값 사용 scale_alpha_manual
scale_color_manual

scale_fill_manual…
scale_linetype      
scale_shape      
scale_size      
scale_x
scale_y
_continuous
_discrete
_reverse
_log10
_sqrt
_date
_datetime
   
보조함수 (Utility성격)  guides _legend
_colorbar
각 geom요소의 범례 표현  
 expand_limits      
labs    축 라벨 / 범례제목 ggtitle, xlab, ylab
update_labels  
xlim, ylim   x축, y축 범위지정  

 

 

library(ggplot2)
str_subset(ls("package:ggplot2"), "scale_")

#grep("scale_", ls("package:ggplot2"), value=TRUE)
 [1] "scale_alpha"               "scale_alpha_continuous"    "scale_alpha_date"          "scale_alpha_datetime"     
 [5] "scale_alpha_discrete"      "scale_alpha_identity"      "scale_alpha_manual"        "scale_alpha_ordinal"
      
 [9] "scale_color_brewer"        "scale_color_continuous"    "scale_color_discrete"      "scale_color_distiller"    
[13] "scale_color_gradient"      "scale_color_gradient2"     "scale_color_gradientn"     "scale_color_grey"         
[17] "scale_color_hue"           "scale_color_identity"      "scale_color_manual"        "scale_color_viridis_c"    
[21] "scale_color_viridis_d"     "scale_colour_brewer"       "scale_colour_continuous"   "scale_colour_date"        
[25] "scale_colour_datetime"     "scale_colour_discrete"     "scale_colour_distiller"    "scale_colour_gradient"    
[29] "scale_colour_gradient2"    "scale_colour_gradientn"    "scale_colour_grey"         "scale_colour_hue"         
[33] "scale_colour_identity"     "scale_colour_manual"       "scale_colour_ordinal"      "scale_colour_viridis_c"   
[37] "scale_colour_viridis_d"    

"scale_continuous_identity" "scale_discrete_identity"   "scale_discrete_manual"   
 
[41] "scale_fill_brewer"         "scale_fill_continuous"     "scale_fill_date"           "scale_fill_datetime"      
[45] "scale_fill_discrete"       "scale_fill_distiller"      "scale_fill_gradient"       "scale_fill_gradient2"     
[49] "scale_fill_gradientn"      "scale_fill_grey"           "scale_fill_hue"            "scale_fill_identity"      
[53] "scale_fill_manual"         "scale_fill_ordinal"        "scale_fill_viridis_c"      "scale_fill_viridis_d" 
    
[57] "scale_linetype"            "scale_linetype_continuous" "scale_linetype_discrete"   "scale_linetype_identity"  
[61] "scale_linetype_manual"     "scale_radius"              

"scale_shape"               "scale_shape_continuous"   
[65] "scale_shape_discrete"      "scale_shape_identity"      "scale_shape_manual"        "scale_shape_ordinal"
      
[69] "scale_size"                "scale_size_area"           "scale_size_continuous"     "scale_size_date"          
[73] "scale_size_datetime"       "scale_size_discrete"       "scale_size_identity"       "scale_size_manual"        
[77] "scale_size_ordinal"        

"scale_type"                

"scale_x_continuous"        "scale_x_date"             
[81] "scale_x_datetime"          "scale_x_discrete"          "scale_x_log10"             "scale_x_reverse"          
[85] "scale_x_sqrt"              "scale_x_time"              

"scale_y_continuous"        "scale_y_date"             
[89] "scale_y_datetime"          "scale_y_discrete"          "scale_y_log10"             "scale_y_reverse"          
[93] "scale_y_sqrt"              "scale_y_time" 

 

같은 변수를 공유하여, legend를 병합

dd %>% ggplot(aes(xx,yy)) + geom_point(aes(color=ty))
dd %>% ggplot(aes(xx,yy)) + geom_point(aes(shape=ty))
dd %>% ggplot(aes(xx,yy)) + geom_point(aes(color=ty,shape=ty)
dd %>% ggplot(aes(xx,yy)) + geom_point(aes(color=ty,shape=ty)) + labs(shape=NULL)

 

dd %>% ggplot(aes(xx,yy)) + geom_point(aes(color=ty,shape=ty)) +
                            theme(legend.position="bottom")

dd %>% ggplot(aes(xx,yy)) + geom_point(aes(color=ty,shape=ty)) +
                            theme(legend.position="none")

 

set.seed(666)
dd <- data.frame( xx=rnorm(666), yy=rnorm(666))
dd$ty <- cut(dd$xx, 3, labels=c("A","B","C"))

dd %>% ggplot(aes(xx,yy)) + geom_point(color="grey20", size=6)

dd %>% ggplot(aes(xx,yy)) + geom_point(aes(color="grey20"), size=6)

dd %>% ggplot(aes(xx,yy)) + geom_point(aes(color=ty), size=6)

dd %>% ggplot(aes(xx,yy)) + geom_point(color="grey20", size=6) + 
                            geom_point(aes(color=ty),  size=3)

dd %>% ggplot(aes(xx,yy)) + geom_point(color="grey20", size=6, show.legend=T) +
                            geom_point(aes(color=ty),  size=3)

 

 

dd %>% ggplot(aes(xx,yy)) + geom_point(aes(color=ty), alpha=0.3)

dd %>% ggplot(aes(xx,yy)) + geom_point(aes(color=ty), alpha=0.3) +
                            guides(color= guide_legend(override.aes = list(alpha=1)))

 

 

Guide

 

limit

 

Categories: ggplot2

onesixx

Blog Owner

Leave a Reply

Your email address will not be published.