跟著iMeta學作圖 | 棒棒圖和顯著相關性散點圖


如要獲得此教程代碼,可以在“公ZH”回復關鍵詞:20230110
棒棒圖的教程來自公眾號“生信寶典”

原文來自iMeta期刊題目為“Pan-cancer analyses reveal molecular and clinical characteristics of cuproptosis regulators”論文中的圖形

image.png

原文鏈接文章鏈接:https://onlinelibrary.wiley.com/doi/10.1002/imt2.68

原文教程鏈接:https://mp.weixin.qq.com/s/yTETDyVzW6CHI318GYqA

今天無意間看到,那么我們的以前來學習下吧,是一篇比較詳細的教程,值得推薦。

原圖:

image

1.2 數據

教程中未給相應的數據,我們依照葫蘆畫瓢自動創建示例數據。

image

1.3 繪圖

導入數據

df <- read.csv("20230110_testdata.csv", header = T)
head(df)

@固定列的順序

#'@這是其中一種方法
df$ID <- factor(df$ID, levels = df$ID)
df$Target <- factor(df$Target, levels = df$Target)
df$Drug <- factor(df$Drug, levels = df$Drug)

繪制基礎圖形

ggplot(df, aes(Correlation,Drug))+
  geom_point(aes(size = Pvalue),color = "skyblue")
@固定列的順序:方法二

使用factor()函數進行固定

ggplot(df, aes(x = Correlation,
               y = factor(Drug, levels = Drug, unique(Drug))))+
  geom_point(aes(size = Pvalue),color = "skyblue")

添加線段

segment_df <- data.frame(x = 0,y = seq(1:27),xend = df$Correlation,yend = seq(1:27))

繪圖

ggplot(df,aes(Correlation,Drug))+
image

1.4 美化

ggplot(df,aes(Correlation,Drug))+
  geom_point(aes(size = Pvalue),color = "skyblue")+
  geom_segment(segment_df,mapping = aes(x = x, y = y, xend = xend, yend = yend),
               size = 0.8,color = "skyblue")+
  # scale_x_continuous(limits = c(0,0.152), #設置x軸范圍
  #                    expand = expansion(mult = 0))+ #expansion函數的參數mult: 百分比間距,可以接受一個向量
  theme(panel.background = element_blank(), #刪除背景
        panel.grid = element_line (colour = "lightgrey"), #設置網格顏色
        panel.border = element_rect(fill = NA,colour = "black",size = 0.8))+ #設置邊框
  ylab("") #刪除y軸名

image

1.5 將ID和Target通過cowplot進行組合

p2 <- ggplot(df,aes("",Target))+
  theme(panel.background = element_blank(),#去除背景
        panel.border = element_blank(), #去除邊框
        axis.ticks.y = element_blank(), #去除y軸刻度
        axis.ticks.x = element_blank())+ #去除x軸刻度
  xlab("")+ #去除x軸標題
  ylab("")+ #去除y軸標題
  coord_fixed(ratio = 10) #將y軸和x軸標度比例設置為10:1
p3 <- ggplot(df,aes("",ID))+
  theme(panel.background = element_blank(),#去除背景
        panel.border = element_blank(),
        axis.ticks.y = element_blank(),
        axis.ticks.x = element_blank())+
  xlab("")+
  ylab("")+
  coord_fixed(ratio = 10)

合并出圖

plot_grid(p3,p2,p1,
          ncol = 3, #三張圖片分三列合并
          rel_widths = c(1,1,2), #三列所占比例為1:1:2
          labels = c("Target.Pathway","Target","Drug"), #每一幅子圖片標題名
          label_size = 8) #標題大小
image

二、棒棒圖優化美化

此圖,已經出來,但是,基因中間都是空白,知否可以進行填充美化呢??

2.1 創建連線

ines <- data.frame(
  x = as.character(c(rep(1, 27),rep(2,27))),
  y = c(sample(1:27), sample(1:27)),
  group = rep(1:27, 2))

注意****:****此方法創建的連線是虛擬的,自己可根據基因之間的相關性手動創建。

繪圖:

p4 <- ggplot(lines) +
  geom_link2(aes(x = x, y = y, group = group,
                 colour = stat(index)
  ), size = 2)+
  scale_colour_gradient2(low = "#04a3ff", mid = "#ffffff", high = "#ff349c", 

                         midpoint = 0.5)+
  geom_point(aes(x, y, group = group, fill = x), shape = 21, color = "#fc1e1e", size = 4)+
  scale_fill_manual(values = c("#04a3ff", "#ff349c"))+
  # 空白主題:
  theme_minimal() + 
  theme(
    legend.position = "none",
    axis.title.x = element_blank(),
    axis.title.y = element_blank(),
    panel.border = element_blank(),
    panel.grid=element_blank(),
    axis.ticks = element_blank(),
    axis.text = element_blank(),
    plot.title=element_text(size=0, face="bold")) 

p4

2.2 組合圖形

library(patchwork)
library(ggplotify)
layout <- c(
  area(t = 1, l = 1, b = 6, r = 3),
  area(t = 0, l = 3, b = 6, r = 7),
  area(t = 1, l = 7, b = 6, r = 9)
)

p5 <- as.ggplot(p2) + p4 + as.ggplot(p3) + plot_layout(design = layout)
image

2.3 最終圖形

plot_grid(p5,p1)
image

圖形顏色可以自己的進行調節即可!!


三、顯著相關性散點圖

原文圖形:

image

我們使用ggplot函數繪制即可

3.1 導入需要的包

library(ggplot)
library(ggpubr)

3.2 繪圖

ggplot(df,aes(Correlation,Pvalue))+
  geom_point(shape = 17)+
  geom_smooth(method = 'lm',color = 'black')+
  ggpubr::stat_cor(label.x = 0.5, size = 8, color = 'red')+
  theme_classic()
image

3.3 參數設置

geom_smooth()函數

?method有如下幾種:"lm", "glm", "gam", "loess"
?color是調控線中位線的顏色
具體參數如何設置請使用??geom_smooth()進行查看

ggpubr包參數設置

1、散點圖的形狀設置
使用ggpubr::show_point_shapes()進行查看
image
顯著性P值和R值的位置設置
使用label.x和label.y進行設置
顏色使用color進行設置
stat_cor(
  mapping = NULL,
  data = NULL,
  method = "pearson",
  alternative = "two.sided",
  cor.coef.name = c("R", "rho", "tau"),
  label.sep = ", ",
  label.x.npc = "left",
  label.y.npc = "top",
  label.x = NULL,
  label.y = NULL,
  output.type = "expression",
  digits = 2,
  r.digits = digits,
  p.digits = digits,
  r.accuracy = NULL,
  p.accuracy = NULL,
  geom = "text",
  position = "identity",
  na.rm = FALSE,
  show.legend = NA,
  inherit.aes = TRUE,
  ...
)

美化

ggplot(df,aes(Correlation,Pvalue))+
  geom_point(shape = 19, color = "red")+
  geom_smooth(method = 'lm',color = 'black', se = FALSE)+
  ggpubr::stat_cor(label.x = 0.1 , color = 'black')+ ## 
  theme_classic()+
  xlab(NULL)+ylab("Cuproptosis activity score")+ggtitle("lMvigor 210")
image

往期文章(總匯)--點擊鏈接進入(列出部分,并非全部

01-[R語言可視化-精美圖形繪制系列]--精美火山圖
02-R語言可視化-精美圖形繪制系列--柱狀圖
03-R語言可視化-精美圖形繪制系列--功能富集分析
04-R語言可視化-精美圖形繪制系列—多組GO富集可視化
05-[R語言可視化-精美圖形繪制系列--堆積圖]
06-[R語言可視化-精美圖形繪制系列--組間相關性分析]
07-[R語言可視化-精美圖形繪制系列]--Mental分析
08-[R語言可視化-精美圖形繪制系列--復雜熱圖+兩圖漸變連線]-【轉載】
09-[R語言可視化-精美圖形繪制系列--桑基圖(Sankey)]
10-[R語言可視化-精美圖形繪制系列--柱狀圖誤差線標記]11-跟著NC學作圖 | 柱狀圖與相關性圖12-[R語言可視化-精美圖形繪制系列--GO、KEGG富集通路關聯圖]
13-[跟著“基迪奧生物學”作圖]--截斷圖14-[R語言可視化-精美圖形繪制系列]--顯著性箱線圖
14-2[R語言可視化]--箱線圖不同的畫法及參數設置 | 學習筆記15-[R語言可視化-精美圖形繪制系列]--組內相關性分析
16-[R語言可視化-精美圖形繪制系列]--主成分分析(PCA)
17-[跟著NC學作圖]--箱線圖(一個函數獲得Mean、SD、P值)
18-[跟著NC學作圖]--生存分析(Survival analysis)
19-[跟著NC學作圖]--散點圖20-[R語言可視化-精美圖形繪制系列]--散點圖+箱線圖組合圖
21-[跟著NC學作圖]-柱狀堆積圖22-[跟著NC學作圖]-繪制頻率分布圖(圖中圖)
22-[R語言可視化-精美圖形繪制系列]--FPI箱線圖
23-跟著NC做基因組數據分析24-使用OmicCircos包--繪制基因圈圖


小杜的生信筆記 ,主要發表或收錄生物信息學的教程,以及基于R的分析和可視化(包括數據分析,圖形繪制等);分享感興趣的文獻和學習資料!

生物信息學

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

推薦閱讀更多精彩內容