正文
r语言Go和弦图 r语言gc
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
【R语言】解决GO富集分析绘图,标签重叠问题
前面我给大家详细介绍过
☞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富集分析视频讲解
[R语言] GO富集分析可视化 GOplot::GOCircle
查看GOplot内示例数据的格式,对自己的数据做处理
观察结论:
观察自己的两个数据表:
table.legend 设置为T时会显示表格
本图中表格和图例是出图后剪切拼合而成,没有用R中的拼图包
R-无序的定类数据分析:列联表、热力图、和弦图、桑基图和统计检验
今天我们将通过一个例子来说明如何分析两个定类变量。
文章背景:我们想研究CFPS2010和CFPS2012青少年对自身的职业期望。
如表1,我们将原始的职业期望编码整合成9类(职业编码的大类)和其他。由于我们想分析同一个人在跨轮次调查中职业期望的稳定性情况,故将分析对象定义为在CFPS2010和CFPS2012中都回答了自己对自己职业期望的受访者。如表2所示,进行重编码后的数据是宽数据,样本量是1920,数据集名字为expect。我们在进行后续分析时,要将其转换为绘图所需的其他形式。
⭐分析方式1——列联表、频数与频率
在表3中,我们展示了2010与2012年青少年职业期望的交叉统计情况。同时该表内,也附上了频数(落在各类别中的数据个数)、⽐例(某⼀类别数据占全部数据的⽐值)、百分⽐(将对⽐的基数作为100⽽计算的⽐值,包括百分比、行百分比和列百分比)。
⭐分析方式2——统计图表
分析前色彩讲解:预设渐变色,我们这里介绍2个色彩包。
1)专门生产系列颜色的RColorBrewer包,详见图1中的系列颜色。
library(RColorBrewer)
display.brewer.all()
2)色盲友好的配色方案viridis包,详见图2中的系列颜色。
library(viridis)
?viridis()#可以看到更多对这组包色彩的说明
接下来我们来画图吧~【注:图3-图6中的类目数字的含义:1)国家机关、党群组织、企业、事业单位负责人;2)医生;3)教师;4)专业技术人员(刨除教师和医生);5)办事人员和有关人员;6)商业、服务业人员;7)农、林、牧、渔、水利业生产人员;8)生产、运输设备操作人员及有关人员;9)军人;10)其他。】
😀绘图1:相邻矩阵的热力图【绘图工具:ggplot2或专业的ComplexHeatmap包】
相邻矩阵是指代表N个节点之间关系的N*N矩阵,矩阵内的位置(i,j)表示第i和j个节点之间的关系。对本文的有向关系网络来说,相邻矩阵不具有对称性。相邻矩阵的的对角线表示节点与自己的关系情况。
相邻矩阵可以用热力图来表示,将节点之间连接的权重用颜色来表达。
Method 1:用ggplot2绘制
library(ggplot2)
library(reshape2)
expect_Heat-as.data.frame(round(prop.table(table(expect$code_new10,expect$code_new12)),5)*100)
colnames(expect_Heat)-c("from","to","value")
#expect_Heat(表4)就是我们生成的用ggplot2来画热力图的数据集。
ggplot(expect_Heat,aes(x=to,y=from,fill=value,label=value))+
geom_tile(color="black")+
scale_fill_gradientn(colors=brewer.pal(9,"YlGnBu"))+
xlab('CFPS2012')+
ylab('CFPS2010')+
coord_equal()+
theme(axis.text.x=element_text(angle=90,hjust=1,colour='black'),
axis.text.y=element_text(angle=0,hjust=1,colour='black'))
#####安装ComplexHeatmap前需先调入devtools包,然后我们再通过install_github函数安装ComplexHeatmap包
library(devtools)
install_github("jokergoo/ComplexHeatmap")
library(ComplexHeatmap)
myColors=brewer.pal(9,"YlGnBu")[1:9]
expect_Heat_matrix-as.matrix(round(prop.table(table(expect$code_new10,expect$code_new12)),5)*100)
#expect_Heat_matrix(图4)就是我们生成的用ComplexHeatmap包绘制热力图所需要的矩阵。
Heatmap(expect_Heat_matrix,myColors)
😀绘图2:和弦图【绘图工具:circlize包的chordDiagram函数】
和弦图(chord Diagram)是一种显示矩阵中数据之间相互关系的数据可视化方法,主要用来展示多个对象之间的关系。
和弦图主要由节点和弦构成,节点数据沿圆周径向排列,连接圆上任意两点的带权重(有宽度)的弧线称之为弦,弦(两点之间的连线)就代表着两者之间的关联关系。不同节点和弦之间用颜色将数据加以分类,能够直观得对数据进行比较和区分,十分适合用来表示复杂数据之间的关联关系。
图6表现了2010至2012年青少年职业期望的演变特征,节点数为10表示要分析十种职业期望,数量通过弧线的颜色和宽度使其相互间的关系表达清晰:不同颜色的连线表示不同职业期望之间的关联程度,权重(弧线宽度)可发现不同期望之间选择上的明显变化。
library(circlize)
library(viridis)
expect_chord-expect_heat
chordDiagram(expect_chord,col=viridis::turbo(10))
😀绘图3:桑基图【绘图工具:ggalluvial包】
桑基图有利于展现分类数据之间的相关性,以流的形式呈现同一类别的元素数量。在图7中,边表示职业期望之间的流动情况,流量表示流动数据的具体数值,节点表示不同的职业期望分类。
通过图7,我们可以总结一下桑基图的特点:
1)起始总流量=结束总流量,即能量守恒。不能在中间过程中创造出流量,也不能有流量总量上的耗损。故,假如出现耗损或新增,可以设一个新的类别,如“其他”,存储这些不属于分析对象的类目。
2)分析流量的流动过程,不同线条代表不同的流量分流情况,边的宽度与流量成比例,边越宽,流量数值越大,
#install.packages('ggalluvial')
library(ggalluvial)
#去掉pid列,对expect数据集进行格式转换,转换后生成的用来画桑基图的数据集如表5,其中person列在绘图时代表流量,year列区分了流动中的状态,expectancy代表节点。
sapply(names(expect),function(x) length(unique(expect[,x])))
expect_sanky-to_lodes_form(co_2[,1:ncol(expect)],axes=1:ncol(expect),id="person")
colnames(expect_sanky) - c("person","year","expectancy")
expect_sanky-mutate(expect_sanky,year=ifelse(year=="code_new10","2010","2012"))
ggplot(expect_sanky,
aes(x = year, stratum = expectancy ,alluvium=person,
fill = expectancy, label = expectancy)) +
geom_flow() +
geom_stratum(alpha = .5) +
geom_text(stat = "stratum", size = 3) +
theme(legend.position = "none") +
ggtitle("job expectancy at two points in time")+
theme(plot.title = element_text(hjust = 0.5))+
theme(panel.grid.major=element_line(colour=NA),
panel.background = element_rect(fill = "transparent",colour = NA),
plot.background = element_rect(fill = "transparent",colour = NA),
panel.grid.minor = element_blank())
注释:这三种图都可以进行美化,我在绘制部分图形时,并没有调参数,具体的内容修饰见参考文件。
⭐分析方式3——统计检验
😊方法一:卡方独立性检验:研究两组分类变量的关系
library(gmodels)
CrossTable(expect$code_new10, expect$code_new12,expected = T,format = "SAS",fisher = T,prop.c = T,prop.t = F,prop.chisq = T)
也可以用stats包中的统计检验分别计算。
1)Pearson 卡方独立性检验
chisq.test(expect$code_new10, expect$code_new12, correct = TRUE,
p = rep(1/length(x), length(x)), rescale.p = FALSE,
simulate.p.value = FALSE, B = 2000)
有多于20%的期望频数小于5,最小的期望频数T=0.025。依据卡方检验的使用条件,我们谨慎起见,选择读取Fisher's Exact Test。
2)Fisher精确检验
fisher.test(co_2$code_new10,co_2$code_new12, workspace = 5000, hybrid = FALSE,
control = list(), or = 1, alternative = "two.sided",simulate.p.value=TRUE,
conf.int = TRUE, conf.level = 0.95)
由P值0.01,拒绝原假设,认为2010年和2012年青少年的职业期望是独立的。
😊方法二:一致性检验
Kappa 系数用于一致性 检验 ,也可以用于衡量分类精度, kappa 系数的计算是基于混淆矩阵的。Kappa检验是用于检验两个变量的测量结果是否一致,强调一致性。从研究目的上来说,一致性、差异性和独立性是不同的概念。
kappa系数进行解读:一般认为kappa0.8,则有很好的一致性,kappa0.4,则一致性较差;此外还应通过显著性检验,也就是p值0.05。
library(irr)
kappa2(expect)
kappa2(expect, "squared") # predefined set of squared weights
根据图10,无论是原数据,还是考虑平方后的数据,我们均可以得到结论:在0.01的显著性水平下,2010年和2012年青少年职业期望的一致性较差。
#kappam.fleiss():在2010、2012的基础上,在添加新的列——2014、2016等,该函数可以检验多个变量的测量结果是否一致。Fleiss' kappa系数:取值范围是【-1,1】,其系数越大,一致性越强,一般经验认为低于0.7是不可接受的尚需要改进,0.7可接受,0.9优秀。
😊方法三:配对分类数据的差异性检验
分析配对分类数据的差异性。此类数据最常见于实验研究,⽤不同的⽅法或不同的时间点检测同⼀批⼈,看两个⽅法的效果是否有差异。此时可使⽤配对卡⽅检验。注意,行名和列名具有相同的分类,并且计数表示成对响应。本质上,那些前后反应相同的个体并不影响对反应变化的评估。我们主要研究“不一致”的计数。Kappa检验会利用列联表的全部数据,而配对卡方检验只利用“不一致“数据。
当数据维度是2*2时,用配对分类数据的McNemar 检验;当数据维度超过2*2时,用McNemar–Bowker检验。
注:1)McNemar–Bowker检验的一个缺点:如果矩阵中的某些位置有0,它可能会失败;
2)如果“不一致”分类的计数很低,McNemar 检验可能不可靠。
mcnemar.test(expect$code_new10,expect$code_new12)
根据图11,McNemar–Bowker检验失败了。
if(!require(rcompanion)){install.packages("rcompanion")}
还可以利用Rcompanion包的nominalSymmetryTest函数对数据进行对称性检验,对本数据也是失效的。
⭐分析方式3——统计模型
待更新。
参考文件
1、《R语言数据可视化之美:专业图表绘制指南》(增强版),张杰,中国工信出版集团电子工业出版社。该书的电子版见微信读书。
2、 circlize官方教程。网址: R 中的循环可视化 (jokergoo.github.io) 。
3、ComplexHeatmap官方教程。网址: Heatmap Complete Reference (jokergoo.github.io)
4、定类数据分析与定序数据分析。 二、定类与定序变量分析 - 百度文库 (baidu.com)
5、定类数据与卡方检验。网址: 定类数据如何分析?卡方检验有什么使用场景? - 百度文库 (baidu.com)
6、 R Handbook: Tests for Paired Nominal Data (rcompanion.org)
五线谱和弦GonD是什么意思?
G和弦r语言Go和弦图,低音为D,即G和弦的第二转位和弦(四六和弦)。
简单地说,r语言Go和弦图我们知道G和弦由G、B、D三个音级构成,以G为低音称为原位和弦;以B为低音为第一转位和弦,可标记为G onB或G/D;以D为低音为第二转位和弦,可标记为G onD或G/D
GonB和F#m7-5这两个和弦怎么按
G bass onB就是G/B,你照正常的G和弦按好,第一个音弹5弦(B,Si,7)就对了。
F#m7-5组成音为F#,A,C,E(#4,6,1,3)所以~~最简单的按法
1弦空
食指2弦1品
中指3弦2品
小指4弦4品。
r语言Go和弦图的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于r语言gc、r语言Go和弦图的信息别忘了在本站进行查找喔。