官术网_书友最值得收藏!

1.6.1 geom_xxx()與stat_xxx()

1.geom_xxx():幾何對象函數

R中的ggplot2包包含幾十種不同的幾何對象函數geom_×××(),以及統計變換函數stat_×××()。平時,我們主要使用幾何對象函數geom_×××(),只有當繪制圖表涉及統計變換時,我們才會使用統計變換函數stat_×××(),比如繪制帶誤差線的均值散點圖或柱形圖等。geom_point()函數繪制散點圖與氣泡圖如圖1-6-3所示,ggplot2默認使用直角坐標系。

圖1-6-3 geom_point()函數的繪制過程

根據函數輸入的變量總數與數據類型(連續型或離散型),我們可以將大部分函數大致分成3個大類,6個小類,如表1-6-1所示,但是有兩類函數沒有囊括在此表中。

表1-6-1 ggplot2函數的分類

(1)圖元(graphical primitive)系列函數:geom_curve()、geom_path()、geom_polygon()、geom_rect()、geom_ribbon()、geom_linerange()、geom_abline()、geom_hline()、geom_vline()、geom_segment()、geom_spoke(),這些函數主要是用于是繪制基本的圖表元素,比如矩形方塊、多邊形、線段等,可以供用戶創造新的圖表類型。

(2)誤差(error)展示函數:geom_crossbar()、geom_errorbar()、geom_errorbarh、geom_pointrange()可以分別繪制誤差框、豎直誤差線、水平誤差線、帶誤差棒的均值點。但是,這些函數需要先設置統計變換參數,才能自動根據數據計算得到均值與標準差,再使用其繪制誤差信息。

每個ggplot2函數的具體參數信息可以查看RStudio的“help”界面或者ggplot2的官方手冊ggplot2的官方手冊:https://ggplot2.tidyverse.org/reference/index.html

2.stat_xxx():統計變換函數

統計(stat)轉換函數在數據被繪制出來之前對數據進行聚合和其他計算。stat_×××()確定了數據的計算方法。不同方法的計算會產生不同的結果,所以一個stat()函數必須與一個geom()函數對應才能進行數據的計算,如圖1-6-4所示。在某些特殊類型的統計圖形制作過程中(比如柱形圖、直方圖、平滑曲線圖、概率密度曲線、箱形圖等),數據對象在向幾何對象的視覺信號映射過程中,會做特殊轉換,也稱統計變換過程。為了讓作圖者更好地聚焦于統計變換過程,將該圖層以同效果的stat_×××()命名可以很好地達到聚焦注意力的作用。

圖1-6-4 stat_count()函數的繪制過程

我們可以將geom_×××(幾何對象)和stat_×××(統計變換)都視作圖層。大多是成對出現的geom_×××()和stat_×××()函數完成的,繪圖效果也很相似,但并非相同。每一個圖層都包含一個幾何對象和一個統計變換,也即每一個以geom_×××開頭的幾何對象都含有一個stat參數,同時每一個stata_×××開頭的幾何對象都擁有一個geom參數。但是為什么要分開命名呢,難道不是多此一舉嗎?

以stat_×××()開始的圖層,在制作這些特殊的統計圖形時,我們無須設定統計變換參數(因為函數開頭名稱已經聲明),但需指定集合對象名稱圖表類型geom,就可以繪制與之對應的統計類型圖表。這樣需要變換geom()函數,就可以根據統計變換結果繪制不同的圖表,可以使得作圖過程更加側重統計變換過程。

geom_×××()繪制的圖層,更加側重圖表類型的繪制,而通過修改統計變換參數,也可以實現繪圖前數據的統計變換,比如繪制均值散點,下面語句(a1)和語句(b1)實現的效果都是一樣的,語句(a1)是使用指定geom="point"(散點)的stat_summary()語句,而語句(b1)是使用指定stat="summary"的geom_point()語句。

       (a1)ggplot(mydata, aes(Class, Value, fill = Class))+
                stat_summary(fun.y="mean", fun.args = list(mult=1), geom="point", color = "white", size = 4)
       (b1)ggplot(mydata, aes(Class, Value, fill = Class))+
        geom_point(stat="summary", fun.y="mean", fun.args = list(mult=1), color = "white", size = 4)

繪制帶誤差線的散點圖,下面語句(a2)和語句(b2)實現的效果也是一樣的,語句(a2)是使用指定geom="pointrange"(帶誤差線的散點)的stat_summary()語句,語句(b2)是使用stat="summary"的geom_pointrange ()語句。

       (a2)ggplot(mydata, aes(Class, Value, fill = Class))+
              stat_summary(fun.data="mean_sdl", fun.args = list(mult=1), geom="pointrange", color = "black", size = 1.2)
       (b2)ggplot(mydata, aes(Class, Value, fill = Class))+
        geom_pointrange(stat="summary", fun.data="mean_sdl", fun.args = list(mult=1), color = "black", size = 1.2)

其中,fun.data表示指定完整的匯總函數,輸入數字向量,輸出數據框,常見4種為:mean_cl_boot、mean_cl_normal、mean_sdl、median_hilow。fun.y表示指定對y的匯總函數,同樣是輸入數字向量,返回單個數字median或mean等,這里的y通常會被分組,匯總后是每組返回1個數字。

當繪制的圖表不涉及統計變換時,我們可以直接使用geom_×××()函數,也無須設定stat參數,因為會默認stat="identity"(無數據變換)。只有涉及統計變換處理時,我們才需要使用更改stat的參數,或者直接使用stat_×××()以強調數據的統計變換。

主站蜘蛛池模板: 理塘县| 沙田区| 格尔木市| 永登县| 柘荣县| 勐海县| 枣庄市| 石首市| 增城市| 东兴市| 溧阳市| 山阴县| 河西区| 莱芜市| 新巴尔虎右旗| 寿宁县| 灵台县| 北票市| 台山市| 嘉峪关市| 上思县| 旅游| 台北市| 兖州市| 大悟县| 屏东县| 盘锦市| 海安县| 玛纳斯县| 清流县| 厦门市| 通河县| 乐山市| 普格县| 鄄城县| 绥德县| 宁都县| 沧州市| 青川县| 盱眙县| 宜君县|