查看GOplot内示例数据的格式,对自己的数据做处理
成都创新互联是专业的伊宁网站建设公司,伊宁接单;提供成都做网站、网站设计,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行伊宁网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
观察结论:
观察自己的两个数据表:
table.legend 设置为T时会显示表格
本图中表格和图例是出图后剪切拼合而成,没有用R中的拼图包
之前分享了如何用ggplot2可视化GO分析的结果。既然做了GO,当然少不了KEGG了。
同样的,我们从 DAVID 获取KEGG pathway的结果。
对于KEGG,我比较喜欢做气泡图,这样用两种形式的图结合在一起,效果更丰富更好看一点。
ggsurvplot(
fit, #生存分析结果
data = NULL, # a dataset used to fit survival curves
fun = NULL, # 定义生存曲线转换的任意函数。 经常使用的转换可以用字符参数指定:“event”绘制累积事件(f(y) = 1-y),“cumhaz”绘制累积风险函数(f(y) = -log(y)),“pct”以百分比表示生存概率。
color = NULL, #曲线颜色
palette = NULL, #颜色调色板,可选调色板有 "grey","npg","aaas","lancet","jco", "ucscgb","uchicago","simpsons"和"rickandmorty".
linetype = 1, #线条形状,可以用数值型向量1,2表示,也可以用字符串向量c("solid", "dashed").
conf.int = FALSE, #是否画出置信区间
pval = FALSE, #是否显示P值
pval.method = FALSE, #是否添加计算P值得方法得文本,前提是pval = TRUE
test.for.trend = FALSE, #默认是F,如果TURE,返回trend Pvalues检验。 趋势检验旨在检测生存曲线的有序差异。 也就是说,至少对一个群体来说。 只有组数为 2时,才能进行趋势测试。
surv.median.line = "none", #画一条水平或者垂直得生存中位值线,允许的值有c("none", "hv", "h", "v"). v: 垂直vertical, h:水平horizontal.
risk.table = FALSE, #是否显示风险table。其他值有absolute" or "percentage",显示绝对数值/百分比;参数"abs_pct" ,百分比以及绝对数值都显示
cumevents = FALSE, # logical value specifying whether to show or not the table of the cumulative number of events.
cumcensor = FALSE, #logical value specifying whether to show or not the table of the cumulative number of censoring.
tables.height = 0.25, #设置table得高度,取值范围0-1
group.by = NULL, #包含分组变量名称得字符串向量。长度=2
facet.by = NULL, #一个字符向量,包含将生存曲线分成多个面板的分组变量的名称。
add.all = FALSE, #一个逻辑值。 如果为TRUE,则在主图中添加合并患者(null model)的生存曲线。
combine = FALSE, # a logical value. If TRUE, combine a list survfit objects on the same plot.
ggtheme = theme_survminer(), #主题名称
tables.theme = ggtheme, #主题名称,默认是theme_survminer.
... #后面描述的参数和其他参数将被传递给ggplot2 geom_*()函数,如linetype, size, ii)或ggpar()函数来定制图形。 看到的细节部分
)
ID转换用到的是 bitr() 函数,bitr()的使用方法:
org.Hs.eg.db包含有多种gene_name的类型
keytypes() :keytypes(x),查看注释包中可以使用的类型
columns() :类似于keytypes(),针对org.Hs.eg.db两个函数返回值一致
select() :select(x, keys, columns, keytype, ...) eg.
函数enrichGO()进行GO富集分析,enrichGO()的使用方法:
举例:
那么圆形的树状图如何实现呢?我查找了一下相关资料。
R语言包 dendextend 这个包可以实现,利用 help(package="dendextend") 查看帮助文档,能够看到其中的一个小例子
但是这个后期美化起来好像不太方便。
还找到了一个参考链接是
介绍的也是 dendextend 这个包的用法。
这个时候再运行上面提到的例子就可以直接得到结果
把树的形状改为圆形,添加样本的名称
鸢尾花数据集是150个样本,用圆形的图看下效果
最终的结果是
这里关于最外圈文本位置的调整,我还的再仔细看看,这里出图后位置不太合适,我是手动调整的!
前面我给大家详细介绍过
☞GO简介及GO富集结果解读
☞四种GO富集柱形图、气泡图解读
☞GO富集分析四种风格展示结果—柱形图,气泡图
☞KEGG富集分析—柱形图,气泡图,通路图
☞ DAVID GO和KEGG富集分析及结果可视化
也用视频给大家介绍过
☞ GO和KEGG富集分析视频讲解
最近有粉丝反映说,利用clusterProfiler这个包绘制GO富集分析气泡图和柱形图的时候,发现GO条目的名字都重叠在一起了。
气泡图
柱形图
这个图别说美观了,简直不忍直视。经过我的认真研究,发现跟R版本有关。前面我给大家展示的基本都是R 3.6.3做出来的图。很多粉丝可能用的都是最新版本的R 4.1.2。
我们知道R的版本在不停的更新,相应的R包也在不停的更新。我把绘制气泡图和柱形图相关的函数拿出来认真的研究了一下,终于发现的症结所在。
dotplot这个函数,多了个 label_format 参数
我们来看看这个参数究竟是干什么用的,看看参数说明
label_format :
a numeric value sets wrap length, alternatively a custom function to format axis labels. by default wraps names longer that 30 characters
原来这个参数默认值是30,当标签的长度大于30个字符就会被折叠,用多行来展示。既然问题找到了,我们就来调节一下这个参数,把他设置成100,让我们的标签可以一行展示。
是不是还是原来的配方,还是熟悉的味道
同样的柱形图,我们也能让他恢复原来的容貌。
关于如何使用R做GO和KEGG富集分析,可参考下文
GO和KEGG富集分析视频讲解