volcano3D可以探测三组之间差异表达的差异,其主要目的是为了在三维火山图中显示差异表达基因,这些图可以使用plotly转换为交互式可视化。其展现形式也让人耳目一新,下面简单介绍 volcano3D 的绘制。

为了方便演示,我们主要用到 volcano3D 、volcano3Ddata包:


install.packages("volcano3D")
devtools::install_github("KatrionaGoldmann/volcano3Ddata")

1)构建 volcano3D 对象


library(volcano3D)
library(volcano3Ddata)


# 演示数据
data("syn_data")


# 构建volcano3D数据模型
syn_polar <- polar_coords(sampledata = syn_metadata, # 样本信息
                          # 信息选择,可以通过?polar_coords查看
                          contrast = "Pathotype",
                          pvalues = syn_pvalues,
                          expression = syn_rld,
                          p_col_suffix = "pvalue",
                          padj_col_suffix = "padj",
                          fc_col_suffix = "log2FoldChange",
                          multi_group_prefix = "LRT",
                          non_sig_name = "Not Significant",
                          significance_cutoff = 0.01,
                          label_column = NULL,
                          fc_cutoff = 0.1)

2)绘制常规火山图


# 对volcano3D对象绘制火山图
syn_plots <- 
     volcano_trio(
                  polar = syn_polar,
                  sig_names = c("not significant","significant",
                                "not significant","significant"),
                  colours = rep(c("grey60",  "slateblue1"), 2),
                  text_size = 9,
                  marker_size=1,
                  shared_legend_size = 0.9,
                  label_rows = c("SLAMF6", "PARP16", "ITM2C"),
                  fc_line = FALSE,
                  share_axes = FALSE)

3)绘制三维火山图俯视图


# 用plotly绘制可交互式图
radial_plotly(polar = syn_polar,
              label_rows = c("SLAMF6", "PARP16", "ITM2C")) # 标记其中三个基因
# 用ggplot绘制静态图
radial_ggplot(polar = syn_polar,
              label_rows = c("SLAMF6", "FMOD"),
              marker_size = 2.3,
              legend_size = 10)

4)同时也支持盒状图


boxplot_trio(syn_polar,
                      value = "FAM92B",
                      text_size = 7,
                      test = "polar_padj",
                      levels_order = c("Lymphoid", "Myeloid", "Fibroid"),
                      box_colours = c("blue", "red", "green3"),
                      step_increase = 0.1)

5)最后是3D火山图登场(单从意义上说没有什么大的亮点,但是从绘图的角度还是让人眼前一亮,后续三组比较的数据可以尝试)


# 参数此处不赘述了,可以查看下R文档,本函数的难点是在构建volcano3D对象上,
# 大家可以研究下,总体来说难度不大。
volcano3D(syn_polar,
               label_rows = c("SLAMF6", "PARP16", "ITM2C"),
               label_size = 10,
               colour_code_labels = F,
               label_colour = "black",
               xy_aspectratio = 1,
               z_aspectratio = 0.9,
               plot_height = 600)

参考资料:

1.https://github.com/KatrionaGoldmann/volcano3D

2.https://peac.hpc.qmul.ac.uk/