ggpubr包繪制SCI文章圖(基礎知識)

最近年中總結,我們學習一些基礎知識,還有幾天總結就結束了,期待FFPE做空間轉錄組大放異彩

安裝及加載ggpubr

安裝方式有兩種:

  • 直接從CRAN安裝:
install.packages("ggpubr")

  • GitHub上安裝最新版本:
if(!require(devtools)) install.packages("devtools")
 devtools::install_github("kassambara/ggpubr")

安裝完之后直接加載就行:

library(ggpubr)

ggpubr可繪制圖形:

ggpubr可繪制大部分我們常用的圖形,下面一一介紹。

分布圖(Distribution)

#構建數據集
set.seed(1234)
df <- data.frame( sex=factor(rep(c("f", "M"), each=200)), 
weight=c(rnorm(200, 55), rnorm(200, 58)))
head(df)

##   sex   weight
## 1  f   53.79293
## 2  f   55.27743
## 3  f   56.08444
## 4  f   52.65430
## 5  f   55.42912
## 6  f   55.50606

密度分布圖以及邊際地毯線并添加平均值線

ggdensity(df, x="weight", add = "mean", rug = TRUE, color = "sex", fill = "sex",
palette = c("#00AFBB", "#E7B800"))

image

帶有均值線和邊際地毯線的直方圖

gghistogram(df, x="weight", add = "mean", rug = TRUE, color = "sex", fill = "sex",
palette = c("#00AFBB", "#E7B800"))

image

箱線圖與小提琴圖

#加載數據集ToothGrowth
data("ToothGrowth")
df1 <- ToothGrowth
head(df1)

##    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

p <- ggboxplot(df1, x="dose", y="len", color = "dose", 
palette = c("#00AFBB", "#E7B800", "#FC4E07"), 
add = "jitter", shape="dose")#增加了jitter點,點shape由dose映射p

image

增加不同組間的p-value值,可以自定義需要標注的組間比較

my_comparisons <- list(c("0.5", "1"), c("1", "2"), c("0.5", "2"))
p+stat_compare_means(comparisons = my_comparisons)+#不同組間的比較
stat_compare_means(label.y = 50)

image

內有箱線圖的小提琴圖

ggviolin(df1, x="dose", y="len", fill = "dose", 
palette = c("#00AFBB", "#E7B800", "#FC4E07"), 
add = "boxplot", add.params = list(fill="white"))+ 
stat_compare_means(comparisons = my_comparisons, label = "p.signif")+#label這里表示選擇顯著性標記(星號) 
stat_compare_means(label.y = 50)

image

條形圖

data("mtcars")
df2 <- mtcars
df2$cyl <- factor(df2$cyl)
df2$name <- rownames(df2)#添加一行name
head(df2[, c("name", "wt", "mpg", "cyl")])

image

按從小到大順序繪制條形圖(不分組排序)

ggbarplot(df2, x="name", y="mpg", fill = "cyl", color = "white", 
palette = "jco",#雜志jco的配色 
sort.val = "desc",#下降排序 
sort.by.groups=FALSE,#不按組排序 
x.text.angle=60)

image

按組進行排序

ggbarplot(df2, x="name", y="mpg", fill = "cyl", color = "white", 
palette = "jco",#雜志jco的配色 
sort.val = "asc",#上升排序,區別于desc,具體看圖演示 
sort.by.groups=TRUE,#按組排序 
x.text.angle=90)

image

偏差圖

偏差圖展示了與參考值之間的偏差

df2$mpg_z <- (df2$mpg-mean(df2$mpg))/sd(df2$mpg)
df2$mpg_grp <- factor(ifelse(df2$mpg_z<0, "low", "high"), levels = c("low", "high"))
head(df2[, c("name", "wt", "mpg", "mpg_grp", "cyl")])

image

繪制排序過的條形圖

ggbarplot(df2, x="name", y="mpg_z", fill = "mpg_grp", color = "white", 
palette = "jco", sort.val = "asc", sort.by.groups = FALSE, x.text.angle=60, 
ylab = "MPG z-score", xlab = FALSE, legend.title="MPG Group")

image

坐標軸變換

ggbarplot(df2, x="name", y="mpg_z", fill = "mpg_grp", color = "white", 
palette = "jco", sort.val = "desc", sort.by.groups = FALSE, 
x.text.angle=90, ylab = "MPG z-score", xlab = FALSE, 
legend.title="MPG Group", rotate=TRUE, ggtheme = theme_minimal())

image

點圖(Dot charts)

棒棒糖圖(Lollipop chart)

棒棒圖可以代替條形圖展示數據

ggdotchart(df2, x="name", y="mpg", color = "cyl", 
palette = c("#00AFBB", "#E7B800", "#FC4E07"), sorting = "ascending", 
add = "segments", ggtheme = theme_pubr())

image

可以自設置各種參數

ggdotchart(df2, x="name", y="mpg", color = "cyl", 
palette = c("#00AFBB", "#E7B800", "#FC4E07"), sorting = "descending", 
add = "segments", rotate = TRUE, group = "cyl", dot.size = 6, 
label = round(df2$mpg), font.label = list(color="white", size=9, vjust=0.5), 
ggtheme = theme_pubr())

image

偏差圖

ggdotchart(df2, x="name", y="mpg_z", color = "cyl", 
palette = c("#00AFBB", "#E7B800", "#FC4E07"), sorting = "descending", 
add = "segment", add.params = list(color="lightgray", size=2), 
group = "cyl", dot.size = 6, label = round(df2$mpg_z, 1), 
font.label = list(color="white", size=9, vjust=0.5), ggtheme = theme_pubr())+ 
geom_line(yintercept=0, linetype=2, color="lightgray")

image

Cleveland點圖

ggdotchart(df2, x="name", y="mpg", color = "cyl", 
palette = c("#00AFBB", "#E7B800", "#FC4E07"), sorting = "descending", 
rotate = TRUE, dot.size = 2, y.text.col=TRUE, ggtheme = theme_pubr())+ 
theme_cleveland()

image

當然,還有很多其他的圖表功能

3. 更多

image
image.png
image
image

Make MA-plot which is a scatter plot of log2 fold changes (on the y-axis) versus the mean expression signal (on the x-axis).

image

MA plot充分展示了基因豐度和表達變化之間的關系。我們可以看到,越靠左下或者右上的點,就是豐度越高而且變化幅度越大的基因。當然了,MA plot就丟了FDR這類統計量。二維圖嘛,死活兩個參數,頂多用顏色做個假三維。
不過對于終端小白用戶來說,如果在volcano plot和MA plot中發現了重疊的靶點(實際上會有不少重疊),那就愉快地拿去做實驗吧。

  • 基因豐度:基因組中某基因的拷貝數。
  • 基因表達豐度:某基因轉錄的mRNA數量。可以用RT-qPCR來檢測。
  • 表達變化(fold change):就是倍數變化,假設A基因表達值為1,B表達值為3,那么B的表達就是A的3倍。一般我們都用count、TPM或FPKM來衡量基因表達水平,所以基因表達值肯定是非負數,那么fold change的取值就是(0, +∞).
  • 差異的顯著性:P-value來衡量。假設檢驗首先必須要有假設,我們假設A和B的表達沒有差異(H0,零假設),然后基于此假設,通過t test(以RT-PCR為例)算出我們觀測到的A和B出現的概率,就得到了P-value,如果P-value<0.05,那么說明小概率事件出現了,我們應該拒絕零假設,即A和B的表達不一樣,即有顯著差異。

基礎知識,多多學習

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
禁止轉載,如需轉載請通過簡信或評論聯系作者。

推薦閱讀更多精彩內容