套件「 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) 以了解安裝說明和有關版本的新聞。
'ggplot2' >= 3.5.0 透過 R 的恆等函數I()
原生支援歸一化父座標 (NPC)。這種新方法不需要特殊的幾何形狀,因為它應該適用於幾乎所有現有的幾何形狀。然而,目前這僅在連續變數映射到x和/或y美學時才有效。如果將來將此機制擴展到支援因子和其他離散變量,則「ggpp」中的所有_npc
幾何圖形都可能變得多餘。同時,「ggpp」中的這些特殊幾何圖形仍然填補了「ggplot2」對 NPC 的支援中的一項空白,儘管規模較小。
映射到x和y美學與資料標籤的觀察或資料之間的區別在於,資料標籤連結到資料的座標,但它們自己的位置通常在資料附近,但不完全是資料的位置。換句話說,只要可以推斷到數據觀察的鏈接,數據標籤在x和y坐標中的位置是靈活的。在註釋的情況下,繪圖區域上的位置是任意的,由可用的圖形設計考慮因素和不遮擋資料觀察的要求決定。在下表中,我們列出了「ggpp」套件中定義的幾何圖形:1)它們是否用於數據標籤、註釋或數據,2)它們遵循的美學和偽美學,以及3)它們是否可以連接原始圖形數據位置到位移位置。在位移位置和原始位置之間、觀察位置和位移標籤之間繪製連接線段或箭頭,還需要更改位置函數傳回的資料(請參閱下一節)。
幾何學 | 主要用途 | 美學 | 部分 |
---|---|---|---|
geom_text_s() | 數據標籤 | x、y、標籤、大小、系列、字體、顏色、alpha、群組、角度、vjust、hjust | 是的 |
geom_label_s() | 數據標籤 | x、y、標籤、大小、系列、字體、顏色、填充、alpha、線寬、線型、群組、vjust、hjust | 是的 |
geom_text_pairwise() | 數據標籤 | x、xmin、xmax、y、標籤、大小、系列、字體、顏色、alpha、群組、角度、vjust、hjust | 水平。 |
geom_label_pairwise() | 數據標籤 | x、xmin、xmax、y、標籤、大小、系列、字體、顏色、填充、alpha、線寬、線型、群組、vjust、hjust | 水平。 |
geom_point_s() | 數據標籤 | x、y、大小、顏色、填滿、alpha、形狀、描邊、群組 | 是的 |
geom_table() 1 | 數據標籤 | x、y、標籤、大小、系列、字體、顏色、alpha、群組、角度、vjust、hjust | 是的 |
geom_plot() 1 、 geom_grob() 1 | 數據標籤 | x、y、標籤、群組、角度、vjust、hjust | 是的 |
geom_margin_arrow() | 數據標籤、刻度標籤、數據 | xintercept、yintercept、標籤、大小、系列、字體、顏色、alpha、群組、vjust、hjust | 不 |
geom_margin_point() | 數據標籤、刻度標籤、數據 | xintercept、yintercept、標籤、大小、系列、字體、顏色、alpha、群組、vjust、hjust | 不 |
geom_margin_grob() | 數據標籤、刻度標籤、數據 | xintercept、yintercept、標籤、大小、系列、字體、顏色、alpha、群組、vjust、hjust | 不 |
geom_quadrant_lines() 、 geom_vhlines() | 數據標籤、刻度標籤、數據 | xintercept、yintercept、標籤、大小、系列、字體、顏色、alpha、群組、vjust、hjust | 不 |
套件“ggpp”中定義的幾何圖形。 1這些幾何圖形以及geom_text()
和geom_label()
存在 NPC 版本,主要用於繪圖註釋。
與「ggplot2」中的位置函數相比,「ggpp」套件中的所有位置函數在將原始 x 和y座標移動到新位置時,都能夠在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()
按群組而不是按繪圖面板計算密度。這六個統計數據旨在與「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() | 局部二維密度過濾 | geom_text_s() 、 geom_label_s() 、 geom_text() 、 geom_label() | 文字作為資料標籤 | 控制板 |
stat_dens2d_label() | 局部二維密度過濾 | geom_text_repel() 、 geom_label_repel() | 文字作為資料標籤 | 控制板 |
stat_dens1d_filter() | 局部一維密度濾波 | geom_text_s() 、 geom_label_s() 、 geom_text() 、 geom_label() | 文字作為資料標籤 | 控制板 |
stat_dens1d_label() | 局部一維密度濾波 | geom_text_repel() 、 geom_label_repel() | 文字作為資料標籤 | 控制板 |
stat_dens2d_filter_g() | 局部二維密度過濾 | geom_text_s() 、 geom_label_s() 、 geom_text() 、 geom_label() | 文字作為資料標籤 | 團體 |
stat_dens2d_label_g() | 局部二維密度過濾 | geom_text_repel() 、 geom_label_repel() | 文字作為資料標籤 | 團體 |
stat_dens1d_filter_g() | 局部一維密度濾波 | geom_text_s() 、 geom_label_s() 、 geom_text() 、 geom_label() | 文字作為資料標籤 | 團體 |
stat_dens1d_label_g() | 局部一維密度濾波 | 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”中的所有可見定義。
下面的圖舉例說明了「ggpp」使之成為可能或與單獨使用「ggplot」相比更容易編碼的一些事情。包小插圖中提供了其他範例,包括幾個組合“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 ))
帶有插圖的圖。
使用本機繪圖座標 (npc) 定位插圖,使用 0..1 範圍內的數值以及I()
。
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、Webassemble 和 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」中新增的新功能會在與「ggpp」相關時新增,例如支援翻轉圖層的orientation
。因此,該軟體包間接包含了「ggplot2」的幾位作者和維護者的重要貢獻,列於 (https://ggplot2.tidyverse.org/)。
透過友善的思想交流以及 Kamil Slowikowski 對「ggpp」和我自己對「ggrepel」的相互貢獻來協調開發,使這兩個軟體包完全相容。
Aphalo, Pedro J. (2024)學習 R:作為一種語言。第 2 版。 R系列。博卡拉頓和倫敦:查普曼和霍爾/CRC Press。 ISBN:9781032516998。466 頁。
Aphalo, Pedro J. (2020)學習 R:作為一種語言。第 1 版。 R系列。博卡拉頓和倫敦:查普曼和霍爾/CRC Press。 ISBN:9780367182533。350 頁。
威克姆、哈德利. 2010.“圖形的分層語法。”計算與圖形統計雜誌 19 (1): 3–28。 https://doi.org/10.1198/jcgs.2009.07098。
© 2016-2024 Pedro J. Aphalo ([email protected])。根據 GPL 版本 2 或更高版本發布。本軟體不提供任何形式的保證。