繪制均值/中位數(shù)和誤差線

更好的閱讀體驗>>

下面將介紹下如何輕松繪制帶有誤差線的均值或中位數(shù)(如下圖)。


加載數(shù)據(jù)

library(ggpubr)
# ToothGrowth數(shù)據(jù)集
data("ToothGrowth")
head(ToothGrowth)

##    len supp dose
## 1  4.2   VC  0.5
## 2 11.5   VC  0.5
## 3  7.3   VC  0.5
## 4  5.8   VC  0.5
## 5  6.4   VC  0.5
## 6 10.0   VC  0.5
# mtcars數(shù)據(jù)集 
data("mtcars")
head(mtcars[, c("wt", "mpg", "cyl")])

##                     wt  mpg cyl
## Mazda RX4         2.62 21.0   6
## Mazda RX4 Wag     2.88 21.0   6
## Datsun 710        2.32 22.8   4
## Hornet 4 Drive    3.21 21.4   6
## Hornet Sportabout 3.44 18.7   8
## Valiant           3.46 18.1   6

誤差圖

要使用的R函數(shù)為ggerrorplot(),其一般格式為:

ggerrorplot(data, x, y, desc_stat = "mean_se")
  • data: 數(shù)據(jù)框
  • x, y: 要繪圖的x, y變量
  • desc_stat: 描述性統(tǒng)計信息嵌溢,用于繪制誤差圖逛漫,默認值為“mean_se”货矮∏谰拢可選值為“mean”, “mean_se”, “mean_sd”, “mean_ci”, “mean_range”, “median”, “median_iqr”, “median_mad”, “median_range”

繪制誤差圖:

# 平均標準差
ggerrorplot(ToothGrowth, x = "dose", y = "len", 
            desc_stat = "mean_sd")
# 更改誤差圖類型并添加均值
ggerrorplot(ToothGrowth, x = "dose", y = "len", 
            desc_stat = "mean_sd",
            error.plot = "errorbar",            # Change error plot type
            add = "mean"                        # Add mean points
            )


還可以添加抖動點,點圖和小提琴圖:

# 添加抖動點
ggerrorplot(ToothGrowth, x = "dose", y = "len", 
            desc_stat = "mean_sd", color = "black",
            add = "jitter", add.params = list(color = "darkgray")
            )
# 添加點圖
ggerrorplot(ToothGrowth, x = "dose", y = "len", 
            desc_stat = "mean_sd", color = "black",
            add = "dotplot", add.params = list(color = "darkgray")
            )
# 添加小提琴圖
ggerrorplot(ToothGrowth, x = "dose", y = "len", 
            desc_stat = "mean_sd", color = "black",
            add = "violin", add.params = list(color = "darkgray")
            )



添加P值:

# 指定比較的列表
my_comparisons <- list( c("0.5", "1"), c("1", "2"), c("0.5", "2") )
ggerrorplot(ToothGrowth, x = "dose", y = "len",
            desc_stat = "mean_sd", color = "black",
            add = "violin", add.params = list(color = "darkgray"))+ 
  stat_compare_means(comparisons = my_comparisons)+ # 添加兩組間比較的P值
  stat_compare_means(label.y = 50)                  # 添加全局P值

根據(jù)分組變量進行著色:

# 根據(jù)"dose"變量著色
ggerrorplot(ToothGrowth, x = "dose", y = "len", 
            desc_stat = "mean_sd", 
            color = "dose", palette = "jco")
# 根據(jù)"supp"變量著色
ggerrorplot(ToothGrowth, x = "dose", y = "len", 
            desc_stat = "mean_sd", 
            color = "supp", palette = "jco",
            position = position_dodge(0.3)     # 調(diào)整圖形之間的間距
            )

折線圖

可以使用ggline()函數(shù)來繪制帶有誤差線的折線圖:

# 帶有抖動點和平均誤差線的折線圖
ggline(ToothGrowth, x = "dose", y = "len", 
       add = c("mean_se", "jitter"))

按分組變量著色:

ggline(ToothGrowth, x = "dose", y = "len", 
       add = c("mean_se", "jitter"),
       color = "supp", palette = "jco")

條形圖

可以使用ggbarplot()函數(shù)來繪制條形圖:

ggbarplot(ToothGrowth, x = "dose", y = "len", 
       add = c("mean_se", "jitter"))

按分組變量著色:

ggbarplot(ToothGrowth, x = "dose", y = "len", 
          add = c("mean_se", "jitter"),
          color = "supp", palette = "jco",
          position = position_dodge(0.8))

添加標簽

數(shù)據(jù)集:mtcars

# 使用行名作為名稱標簽
df <- as.data.frame(mtcars[, c("am", "hp")])
df$name <- rownames(df)
head(df)

##                   am  hp              name
## Mazda RX4          1 110         Mazda RX4
## Mazda RX4 Wag      1 110     Mazda RX4 Wag
## Datsun 710         1  93        Datsun 710
## Hornet 4 Drive     0 110    Hornet 4 Drive
## Hornet Sportabout  0 175 Hornet Sportabout
## Valiant            0 105           Valiant

繪制帶標簽的條形圖:

set.seed(123)

ggbarplot(df, x = "am", y = "hp",
          add = c("mean_se", "point"),
          color = "am", fill = "am", alpha = 0.5,
          palette = "jco")+
   ggrepel::geom_text_repel(aes(label = name))

參考

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末忆畅,一起剝皮案震驚了整個濱河市犁功,隨后出現(xiàn)的幾起案子氓轰,更是在濱河造成了極大的恐慌,老刑警劉巖浸卦,帶你破解...
    沈念sama閱讀 216,324評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件署鸡,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機靴庆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評論 3 392
  • 文/潘曉璐 我一進店門时捌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人炉抒,你說我怎么就攤上這事奢讨。” “怎么了焰薄?”我有些...
    開封第一講書人閱讀 162,328評論 0 353
  • 文/不壞的土叔 我叫張陵禽笑,是天一觀的道長。 經(jīng)常有香客問我蛤奥,道長,這世上最難降的妖魔是什么僚稿? 我笑而不...
    開封第一講書人閱讀 58,147評論 1 292
  • 正文 為了忘掉前任凡桥,我火速辦了婚禮,結(jié)果婚禮上蚀同,老公的妹妹穿的比我還像新娘缅刽。我一直安慰自己,他們只是感情好蠢络,可當我...
    茶點故事閱讀 67,160評論 6 388
  • 文/花漫 我一把揭開白布衰猛。 她就那樣靜靜地躺著,像睡著了一般刹孔。 火紅的嫁衣襯著肌膚如雪啡省。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,115評論 1 296
  • 那天髓霞,我揣著相機與錄音卦睹,去河邊找鬼。 笑死方库,一個胖子當著我的面吹牛结序,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播纵潦,決...
    沈念sama閱讀 40,025評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼徐鹤,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了邀层?” 一聲冷哼從身側(cè)響起返敬,我...
    開封第一講書人閱讀 38,867評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎寥院,沒想到半個月后救赐,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,307評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,528評論 2 332
  • 正文 我和宋清朗相戀三年经磅,在試婚紗的時候發(fā)現(xiàn)自己被綠了泌绣。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,688評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡预厌,死狀恐怖阿迈,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情轧叽,我是刑警寧澤苗沧,帶...
    沈念sama閱讀 35,409評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站炭晒,受9級特大地震影響待逞,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜网严,卻給世界環(huán)境...
    茶點故事閱讀 41,001評論 3 325
  • 文/蒙蒙 一识樱、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧震束,春花似錦怜庸、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,657評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至嘉栓,卻和暖如春宏榕,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背侵佃。 一陣腳步聲響...
    開封第一講書人閱讀 32,811評論 1 268
  • 我被黑心中介騙來泰國打工担扑, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人趣钱。 一個月前我還...
    沈念sama閱讀 47,685評論 2 368
  • 正文 我出身青樓涌献,卻偏偏與公主長得像,于是被迫代替她去往敵國和親首有。 傳聞我的和親對象是個殘疾皇子燕垃,可洞房花燭夜當晚...
    茶點故事閱讀 44,573評論 2 353

推薦閱讀更多精彩內(nèi)容