' ggpp ' 패키지는 'ggplot2' 패키지(>= 3.5.0)에 구현된 그래픽 문법을 확장하는 빌딩 블록 세트를 제공합니다. 확장은 플롯의 데이터 레이블 및 주석 지원을 향상시킵니다. 위치 함수는 모든 지오메트리에 사용할 수 있는 새로운 너징 접근 방식을 구현하지만 특히 이 패키지의 geom_text_s()
및 geom_label_s()
및 패키지 'ggrepel'(>= 0.9.2)의 geom_text_repel()
및 geom_label_repel()
과 함께 유용합니다. 설치 지침 및 릴리스 관련 뉴스는 (https://ggrepel.slowkow.com)을 참조하세요.
정규화된 상위 좌표(NPC)는 R의 항등 함수 I()
를 통해 'ggplot2' >= 3.5.0에서 기본적으로 지원됩니다. 이 새로운 접근 방식은 거의 모든 기존 형상과 작동해야 하므로 특별한 형상이 필요하지 않습니다. 그러나 현재 이는 연속 변수가 x 및/또는 y 미학에 매핑된 경우에만 작동합니다. 이 메커니즘이 향후 요인 및 기타 이산 변수를 지원하도록 확장되면 'ggpp'의 모든 _npc
기하학이 중복될 수 있습니다. 한편, 'ggpp'의 이러한 특수 형상은 'ggplot2'의 NPC 지원에서 비록 작지만 여전히 격차를 메우고 있습니다.
x 및 y 미학과 데이터 레이블에 매핑된 관찰 또는 데이터 간의 차이점은 데이터 레이블이 데이터 좌표에 연결되어 있지만 자체 위치가 일반적으로 데이터의 위치와 가깝지만 정확히 일치하지는 않는다는 것입니다. 즉, x 및 y 좌표의 데이터 레이블 위치는 데이터 관찰에 대한 링크를 추론할 수 있는 한 유연합니다. 주석의 경우 플롯 영역의 위치는 임의적이며 사용 가능한 그래픽 디자인 고려 사항 및 데이터 관찰을 가리지 않아야 한다는 요구 사항에 따라 결정됩니다. 아래 표에는 'ggpp' 패키지에 정의된 기하학이 나열되어 있습니다. 1) 데이터 레이블, 주석 또는 데이터용인지 여부, 2) 그들이 준수하는 미학과 유사 미학, 3) 원본을 연결할 수 있는지 여부 데이터 위치를 변위된 위치로 바꿉니다. 변위된 위치와 원래 위치, 관측치와 변위된 레이블 사이의 연결 세그먼트 또는 화살표를 그리려면 위치 함수에 의해 반환된 데이터를 변경해야 합니다(다음 섹션 참조).
기하학 | 주요 용도 | 미학 | 분절 |
---|---|---|---|
geom_text_s() | 데이터 레이블 | x, y, 상표, 크기, 가족, 글꼴 얼굴, 색깔, 알파, 그룹, 각도, vjust, hjust | 예 |
geom_label_s() | 데이터 레이블 | x, y, 상표, 크기, 가족, 글꼴 얼굴, 색깔, 가득 따르다, 알파, 선폭, 선종류, 그룹, vjust, 조정하다 | 예 |
geom_text_pairwise() | 데이터 레이블 | x, xmin, xmax, y, 상표, 크기, 가족, 글꼴, 색깔, 알파, 그룹, 각도, vjust, hjust | 수평. |
geom_label_pairwise() | 데이터 레이블 | x, xmin, xmax, y, 상표, 크기, 가족, 글꼴, 색깔, 가득 따르다, 알파, 선폭, 선종류, 그룹, vjust, hjust | 수평. |
geom_point_s() | 데이터 레이블 | x, y, 크기, 색상, 채우기, 알파, 모양, 획, 그룹 | 예 |
geom_table() 1 | 데이터 레이블 | x, y, 상표, 크기, 가족, 글꼴 얼굴, 색깔, 알파, 그룹, 각도, vjust, hjust | 예 |
geom_plot() 1 , geom_grob() 1 | 데이터 레이블 | x, y, 라벨, 그룹, 각도, vjust, hjust | 예 |
geom_margin_arrow() | 데이터 레이블, 눈금 레이블, 데이터 | xintercept, yintercept, 상표, 크기, 가족, 글꼴 얼굴, 색깔, 알파, 그룹, vjust, hjust | 아니요 |
geom_margin_point() | 데이터 레이블, 눈금 레이블, 데이터 | xintercept, yintercept, 상표, 크기, 가족, 글꼴 얼굴, 색깔, 알파, 그룹, vjust, hjust | 아니요 |
geom_margin_grob() | 데이터 레이블, 눈금 레이블, 데이터 | xintercept, yintercept, 상표, 크기, 가족, 글꼴 얼굴, 색깔, 알파, 그룹, vjust, hjust | 아니요 |
geom_quadrant_lines() , geom_vhlines() | 데이터 레이블, 눈금 레이블, 데이터 | xintercept, yintercept, 상표, 크기, 가족, 글꼴 얼굴, 색깔, 알파, 그룹, vjust, hjust | 아니요 |
패키지 'ggpp'에 정의된 도형입니다. 주로 플롯 주석에 사용되는 geom_text()
및 geom_label()
뿐만 아니라 이러한 형상에 대한 NPC 버전이 1개 있습니다.
'ggplot2'의 위치 함수와 달리 'ggpp' 패키지의 모든 위치 함수는 새 위치로 이동할 때 data
객체의 원래 x 및 y 좌표를 다른 이름으로 유지할 수 있습니다. 이를 통해 이 패키지의 geom_text_s()
, geom_label_s()
, geom_point_s()
, geom_table()
, geom_plot()
및 geom_grob()
과 호환됩니다. 이러한 모든 형상은 원래 위치를 변위된 위치에 연결하는 세그먼트나 화살표를 그릴 수 있습니다. 이전 버전과의 호환성이 유지되며 position
형식 매개변수가 있는 모든 형상에서 사용할 수 있습니다. 이는 'ggrepel'(<= 0.9.1) 패키지에 사용된 접근 방식과 유사하지만 새 위치 기능이 'ggplot2'와 역호환되도록 허용하는 다른 명명 규칙을 사용합니다. 버전 0.9.2부터 'ggrepel' 패키지의 geom_text_repel()
및 geom_label_repel()
기하학은 이 새로운 명명 규칙과 완전히 호환됩니다.
위치 함수 position_nudge_keep()
, position_nudge_to()
, position_nudge_center()
및 position_nudge_line()
은 다양한 종류의 너징을 구현합니다. 마지막 두 기능을 사용하면 임의의 점이나 선 또는 관측값에 즉시 맞춰진 다항식 또는 평활화 스플라인과 관련하여 데이터 점의 상대적 위치에 따라 자동으로 달라지는 너징을 적용할 수 있습니다.
위치 함수 position_stacknudge()
, position_fillnudge()
, position_jitternudge()
, position_dodgenudge()
및 position_dodge2nudge()
는 두 위치 함수의 역할을 각각 결합합니다. 스태킹, 닷징 또는 지터를 사용하는 플롯 레이어에서 레이블을 쉽게 이동할 수 있습니다. position_jitter_keep()
, position_stack_keep()
, position_fill_keep()
, position_dodge_keep()
, position_dosge2_keep()
함수는 'ggplot2'의 위치처럼 동작하지만 data
객체에 원래 좌표를 유지합니다.
위치 | 주요 용도 | 배수량 | 가장 많이 사용되는 |
---|---|---|---|
position_nudge_keep() | 슬쩍 찌르다 | x, y(고정 거리) | 데이터 레이블 |
position_jitter_keep() | 지터 | x, y(임의) | 도트 플롯 |
position_stack_keep() | 스택 | 수직(절대) | 기둥 및 막대 그래프 |
position_stack_minmax() | 스택 | 수직(절대) | 오차 막대 |
position_fill_keep() | 채우다 | 수직(상대, 분수) | 기둥 그림 |
position_dodge_keep() | 다지 | 옆으로 (절대) | 기둥 및 막대 그래프 |
position_dosge2_keep() | 닷지2 | 옆으로 (절대) | 상자 그림 |
position_nudge_to() | 슬쩍 찌르다 | x, y(고정 위치) | 데이터 레이블 |
position_nudge_center() | 슬쩍 찌르다 | x, y(멀리 또는 대상을 향해) | 데이터 레이블 |
position_nudge_line() | 슬쩍 찌르다 | x, y(멀리 또는 대상을 향해) | 데이터 레이블 |
position_stacknudge() | 스택 + 넛지 | 결합, 위 참조 | 열 도표의 데이터 레이블 |
position_fillnudge() | 채우기 + 조금씩 움직이기 | 결합, 위 참조 | 열 도표의 데이터 레이블 |
position_jitternudge() | 지터 + 너지 | 결합, 위 참조 | 점도표의 데이터 레이블 |
position_dodgenudge() | 회피 + 넛지 | 결합, 위 참조 | 열 도표의 데이터 레이블 |
position_dodge2nudge() | 닷지2 + 넛지 | 결합, 위 참조 | 상자 그림의 데이터 레이블 |
'ggpp' 패키지에 정의된 위치 함수입니다.
통계 stat_fmt_tb()
geom_table()
사용하여 플롯할 테이블 형식을 지정하는 데 도움이 됩니다.
네 가지 통계인 stat_dens2d_filter()
, stat_dens2d_label()
, stat_dens1d_filter()
및 stat_dens1d_label()
은 패널에 있는 관찰의 로컬 2D 밀도를 기반으로 관찰의 태그 지정 또는 선택적 레이블 지정을 구현합니다. 또 다른 두 통계인 stat_dens1d_filter_g()
및 stat_dens1d_filter_g()
는 플롯 패널 대신 그룹별로 밀도를 계산합니다. 이 6개 통계는 'ggrepel'(>= 0.8.0) 패키지의 geom_text_repel()
및 geom_label_repel()
과 함께 잘 작동하도록 설계되었습니다.
통계 stat_apply_panel()
및 stat_apply_group()
cumsum()
, cummax()
및 diff()
와 같은 숫자 벡터를 반환하는 임의 함수를 적용하는 데 유용합니다. 통계 stat_centroid()
및 stat_summary_xy()
사용하면 x 와 y 모두에 대한 요약을 계산하고 이를 geom에 전달할 수 있습니다.
통계 stat_quadrant_counts()
및 stat_panel_counts()
관측치 수로 플롯에 주석을 쉽게 달 수 있습니다.
통계량 | 주요 용도 | 일반적인 기하학 | 가장 많이 사용되는 | 컴퓨팅 기능 |
---|---|---|---|---|
stat_fmt_tb() | 서식 지정 및 선택 | geom_table() | 테이블을 데이터 레이블로 사용 | 그룹 |
stat_fmt_tb() | 서식 지정 및 선택 | geom_table_npc() | 주석으로 사용되는 테이블 | 그룹 |
stat_dens2d_filter() | 로컬 2D 밀도 필터링 | geom_text_s() , geom_label_s() , geom_text() , geom_label() | 데이터 레이블로 텍스트 | 패널 |
stat_dens2d_label() | 로컬 2D 밀도 필터링 | geom_text_repel() , geom_label_repel() | 데이터 레이블로 텍스트 | 패널 |
stat_dens1d_filter() | 로컬 1D 밀도 필터링 | geom_text_s() , geom_label_s() , geom_text() , geom_label() | 데이터 레이블로 텍스트 | 패널 |
stat_dens1d_label() | 로컬 1D 밀도 필터링 | geom_text_repel() , geom_label_repel() | 데이터 레이블로 텍스트 | 패널 |
stat_dens2d_filter_g() | 로컬 2D 밀도 필터링 | geom_text_s() , geom_label_s() , geom_text() , geom_label() | 데이터 레이블로 텍스트 | 그룹 |
stat_dens2d_label_g() | 로컬 2D 밀도 필터링 | geom_text_repel() , geom_label_repel() | 데이터 레이블로 텍스트 | 그룹 |
stat_dens1d_filter_g() | 로컬 1D 밀도 필터링 | geom_text_s() , geom_label_s() , geom_text() , geom_label() | 데이터 레이블로 텍스트 | 그룹 |
stat_dens1d_label_g() | 로컬 1D 밀도 필터링 | geom_text_repel() , geom_label_repel() | 데이터 레이블 | 그룹 |
stat_panel_counts() | 관측치 수 | geom_text() , geom_label() | 주석으로 텍스트 | 패널 |
stat_group_counts() | 관측치 수 | geom_text() , geom_label() | 주석으로 텍스트 | 패널 |
stat_quadrant_counts() | 관측치 수 | geom_text() , geom_label() | 주석으로 텍스트 | 패널 |
stat_apply_panel() | 누적 요약 | geom_point() , geom_line() 등 | 산점도 및 선 도표 | 패널 |
stat_apply_group() | 누적 요약 | geom_point() , geom_line() 등 | 산점도 및 선 도표 | 그룹 |
stat_centroid() | x와 y 합동 요약 | geom_point() , geom_rug() , geom_margin_arrow() 등 | 데이터 요약 | 그룹 |
stat_summary_xy() | x와 y 합동 요약 | geom_point() , geom_rug() , geom_margin_arrow() 등 | 데이터 요약 | 그룹 |
stat_functions() | x 범위에서 y를 계산합니다. | geom_line() , geom_point() 등 | 함수 곡선 그리기 | 그룹 |
'ggpp' 패키지에 정의된 통계입니다.
"outward_mean"
, "inward_mean"
, "outward_median"
및 "inward_median"
정렬은 데이터 중심 대신 데이터 중심을 기준으로 외부 및 내부 정렬을 구현합니다. "position"
원래 위치에 가장 가까운 가장자리에 자리맞추기를 구현합니다. 이는 'ggpp'에 구현된 명명 규칙을 사용하여 원래 위치를 저장하는 위치 기능과 함께만 작동합니다. 그렇지 않으면 기본 정렬이 "center"
/ "middle"
로 대체됩니다.
이 패키지는 원래 'ggpmisc'에 사용하기 위해 작성된 문법 확장이 포함된 'ggpmisc' 패키지의 "파생"입니다. 'ggpmisc'의 크기가 커짐에 따라 개발과 유지 관리를 쉽게 하고 다른 패키지로 쉽게 가져오기 위해 두 개의 패키지로 분할하는 것이 필요했습니다. 당분간 'ggpmisc' 패키지는 'ggpp'에서 표시되는 모든 정의를 가져오고 다시 내보냅니다.
아래 플롯은 단독으로 사용되는 'ggplot'에 비해 'ggpp'를 사용하면 코딩이 가능하거나 코드 작성이 더 쉬워지는 몇 가지 사항을 보여줍니다. 'ggpp'와 'ggrepel'을 결합한 여러 가지 추가 예제가 패키지 비네팅에 제공됩니다.
library( ggpp )
library( ggrepel )
library( dplyr )
삽입 테이블이 있는 플롯입니다.
mtcars % > %
group_by( cyl ) % > %
summarize( wt = mean( wt ), mpg = mean( mpg )) % > %
ungroup() % > %
mutate( wt = sprintf( " %.2f " , wt ),
mpg = sprintf( " %.1f " , mpg )) - > tb
df <- tibble( x = 5.45 , y = 34 , tb = list ( tb ))
ggplot( mtcars , aes( wt , mpg , colour = factor ( cyl ))) +
geom_point() +
geom_table( data = df , aes( x = x , y = y , label = tb ))
삽입 플롯이 있는 플롯입니다.
I()
와 함께 0..1 범위의 숫자 값을 사용하는 기본 플롯 좌표(npc)를 사용하여 배치된 삽입 플롯입니다.
p <- ggplot( mtcars , aes( factor ( cyl ), mpg , colour = factor ( cyl ))) +
stat_boxplot() +
labs( y = NULL , x = " Engine cylinders (number) " ) +
theme_bw( 9 ) + theme( legend.position = " none " )
ggplot( mtcars , aes( wt , mpg , colour = factor ( cyl ))) +
geom_point( show.legend = FALSE ) +
annotate( " plot " , x = I( 0.05 ), y = I( 0.05 ), label = p ,
hjust = " inward " , vjust = " inward " ) +
expand_limits( y = 0 , x = 0 )
즉석에서 계산되어 별표로 표시되는 수단입니다.
ggplot( mtcars , aes( wt , mpg , colour = factor ( cyl ))) +
geom_point() +
stat_centroid( shape = " asterisk " , size = 6 )
즉시 계산된 중앙값은 주변 화살표로 표시됩니다. 그룹당 관측치 수가 표시된 라벨입니다.
ggplot( mtcars , aes( wt , mpg , colour = factor ( cyl ))) +
geom_point() +
stat_centroid( geom = " y_margin_arrow " , .fun = median ,
aes( yintercept = after_stat( y )), arrow.length = 0.05 ) +
stat_group_counts( vstep = 0 , hstep = 0.09 )
df <- data.frame ( x1 = c( 1 , 2 , 1 , 3 , - 1 ),
x2 = c( " a " , " a " , " b " , " b " , " b " ),
grp = c( " some long name " , " other name " , " some name " ,
" another name " , " a name " ))
# Add labels to a horizontal column plot (stacked by default)
ggplot( data = df , aes( x2 , x1 , group = grp )) +
geom_col(aes( fill = grp ), width = 0.5 ) +
geom_hline( yintercept = 0 ) +
geom_text(
aes( label = grp ),
position = position_stacknudge( vjust = 1 , y = - 0.2 )) +
theme( legend.position = " none " )
CRAN에서 최신 안정 버전 설치(소스, Mac 및 Win 바이너리):
install.packages( " ggpp " )
R-Universe CRAN 유사 저장소에서 현재 불안정한 버전 설치(Mac, Win, 웹어셈블리, Linux용 바이너리 및 사용 가능한 소스):
install.packages( ' ggpp ' ,
repos = c( ' https://aphalo.r-universe.dev ' ,
' https://cloud.r-project.org ' ))
GitHub에서 현재 불안정한 버전 설치(소스에서):
# install.packages("devtools")
devtools :: install_github( " aphalo/ggpp " )
도움말 페이지 및 사용자 가이드를 포함한 패키지에 대한 HTML 문서는 (https://docs.r4photobiology.info/ggpp/)에서 확인할 수 있습니다.
업데이트 소식은 (https://www.r4photobiology.info/)에 게시되어 있습니다.
Aphalo(2020)의 7장과 Aphalo(2024)의 9장에서는 'ggplot2'에 구현된 그래픽 문법의 기본 개념과 'ggpp' 및 'ggpmisc 패키지에서 사용할 수 있는 여러 가지 문법을 포함하여 이 문법의 확장에 대해 설명합니다. '. 책과 관련된 정보는 https://www.learnr-book.info/에서 확인하실 수 있습니다.
(https://github.com/aphalo/ggpp/issues)에서 버그를 보고하고 새로운 기능을 요청하세요. 풀 요청은 https://github.com/aphalo/ggpp에서 환영합니다.
이 패키지를 사용하여 과학 또는 상업 출판물을 제작하는 경우 다음에 따라 인용하십시오.
citation( " ggpp " )
# > To cite package 'ggpp' in publications use:
# >
# > Aphalo P (2024). _ggpp: Grammar Extensions to 'ggplot2'_. R package
# > version 0.5.8-1, <https://CRAN.R-project.org/package=ggpp>.
# >
# > A BibTeX entry for LaTeX users is
# >
# > @Manual{,
# > title = {ggpp: Grammar Extensions to 'ggplot2'},
# > author = {Pedro J. Aphalo},
# > year = {2024},
# > note = {R package version 0.5.8-1},
# > url = {https://CRAN.R-project.org/package=ggpp},
# > }
'ggplot2' 패키지의 확장인 'ggpp' 패키지의 코드 중 일부는 'ggplot2'의 레이어 기능 및 스케일을 템플릿으로 사용하여 생성되었습니다. 'ggpp'의 사용자 인터페이스는 'ggplot2' 및 그래픽의 계층화된 문법과 최대한 일치하는 것을 목표로 합니다(Wickham 2010). 'ggplot2'에 추가된 새로운 기능은 레이어 뒤집기 orientation
지원과 같이 'ggpp'와 관련된 경우 추가됩니다. 결과적으로 이 패키지에는 (https://ggplot2.tidyverse.org/)에 나열된 'ggplot2'의 여러 작성자 및 관리자의 중요한 기여가 간접적으로 포함됩니다.
Kamil Slowikowski가 'ggpp'에 대해 그리고 내가 'ggrepel'에 대해 아이디어의 우호적인 교환과 상호 기여를 통한 개발 조정을 통해 두 패키지가 완전히 상호 호환되도록 만들었습니다.
Aphalo, Pedro J. (2024) R을 배우세요: 언어로서. 2ed. R 시리즈. 보카레이턴과 런던: Chapman and Hall/CRC Press. ISBN: 9781032516998. 466쪽.
Aphalo, Pedro J. (2020) R을 배우세요: 언어로서. 1ed. R 시리즈. 보카레이턴과 런던: Chapman and Hall/CRC Press. ISBN: 9780367182533. 350쪽.
위컴, 해들리. 2010. "그래픽의 계층화된 문법." 전산 및 그래픽 통계 저널 19(1): 3–28. https://doi.org/10.1198/jcgs.2009.07098.
© 2016-2024 페드로 J. 아팔로([email protected]). GPL 버전 2 이상으로 출시되었습니다. 이 소프트웨어는 어떠한 종류의 보증도 제공하지 않습니다.