能画雷达图的fmsb包:打造属于你自己的‘六边形战士’

Hello,各位小伙伴大家好啊,又到了小果的知识分享阶段了,是不是很激动呢?小果可是迫不及待了呢~

不知道各位小伙伴知不知道国乒队长—六边形战士—马龙,他可是超级全满贯男子选手,因其在乒乓球方面强大的各人能力,而被日本媒体称为“六边形战士”。他的强大是毋庸置疑的,但小果更好奇的是,如何才能将他‘六边形’的能力体现出来呢?

想来这种东西肯定是难不倒小果啦,经过小果的查找,发现这是一种名叫‘雷达图’的展示方式,除此之外,它还有网络图、蜘蛛图、星图等别名,主要是用来表现多维数据的图表,它可以将多个维度的数据量映射到坐标轴上,每一个维度的数据都分别代表一个坐标轴,并将每个坐标轴上的数据点用线连接起来就形成了一个多边形。如此点、线、多边形和坐标轴共同组成的图形称为雷达图。

正如大家所看到的样子,目前针对运动员的场上表现多以雷达图来表示,除此之外,在公司汇报时,各部门的开销与预算也可以用它来进行展示。且其在生物信息学中也有非常亮眼的应用,比如通过高通量测序之后,某个基因在不同样本之间的readcount数。今天我们就用这个数据来给大家进行展示!

说到高通量测序,相信大家肯定不会陌生,小果建议大家使用服务器进行高通量数据的处理,因为,有多款数据分析软件面向Linux是开源的,且操作简单,且Linux本身就存在着多种小命令,能达到对数据的清洗、提取和计算的目的。如果大家还没有的话,可以联系小果进行租赁哦~

今天我们要用到的R包是一款很经典且简单的可视化工具包——fmsb,那现在就进入咱们今天的练习吧!

#安装和调用R包

install.packages(‘fmsb’)

library(fmsb)

#读入数据

data <- read.table(‘单基因.txt’,header = T,sep = ‘\t’)

data

屏幕上有字

描述已自动生成

#为data添加最小值和最高值区间

temp <- rbind(rep(20,10),rep(0,10),data)

temp

手机屏幕的截图

描述已自动生成

#简单出图

P1 <- radarchart(temp)

图表, 雷达图

描述已自动生成

#更改所画图形

P2 <- radarchart(temp,

pcol = ‘black’, #所画图形的线条颜色

pfcol = rgb(0.3,0.14,0.23,0.20), #填充颜色,这里的前三个属于颜色,最后是透明度

plwd = 2) #所画线条粗细

图表, 雷达图

描述已自动生成

#改变底图图形

P3 <- radarchart(temp,

cglcol = ‘red’, #底图线的颜色

cglty = 1, #底图线的形式,1是实线,2-6是虚线

cglwd = 0.8, #底线的宽度

)

图表, 雷达图

描述已自动生成

#改变标签

P4 <- radarchart(temp,

axistype = 1, #改变坐标轴的标识方式,大家可以分别尝试1和2

axislabcol = ‘black’, #标签颜色

caxislabels = seq(0,20,5), #标签的显示向量度

vlcex = 0.8 #标签大小

)

图表, 雷达图

描述已自动生成

#整体改变

P5 <- radarchart(temp,

axistype = 2, #改变坐标轴的标识方式

pcol = ‘red’, #所画图形的线条颜色

pfcol = rgb(0.3,0.14,0.23,0.20), #填充颜色

plwd = 2, #所画线条的线宽

cglcol = ‘red’, #底图线的颜色

cglty = 1, #底图线的形式,1是实线,2-6是虚线

axislabcol = ‘yellow’, #标签颜色

caxislabels = seq(0,20,5), #标签的显示向量

cglwd = 0.8, #底线的宽度

vlcex = 0.8 #标签大小

)

图表, 雷达图

描述已自动生成

既然我们能单样品进行绘制,那肯定就能绘制多个样品,但是每个样品出一个图的话,的确不好进行相互间的比较,所以我们就要将多个样品在一张图中进行展示,这也是很简单的哦,马上就能实现。

#多组绘制

#读入数据

df <- read.table(‘多基因.txt’,sep = ‘\t’,header = T)

df

文本

中度可信度描述已自动生成

#设定每个定量变量的最大值和最小值

dt <- rbind(rep(20,5) , rep(0,5) , df)

dt

电脑萤幕画面

中度可信度描述已自动生成

#分别为填充和边框设置颜色

colors_border=c( rgb(0.2,0.3,0.5,0.9), rgb(0.8,0.4,0.5,0.9) , rgb(0.7,0.5,0.1,0.9) )

colors_in=c( rgb(0.2,0.5,0.5,0.4), rgb(0.8,0.2,0.5,0.4) , rgb(0.7,0.5,0.1,0.4) )

P6 <- radarchart( dt , axistype=1 ,

pcol=colors_border , pfcol=colors_in , plwd=2 , plty=1,

cglcol=”grey”, cglty=1, axislabcol=”grey”, caxislabels=seq(0,20,5), cglwd=0.8,

vlcex=0.8

)

图表, 雷达图

描述已自动生成

#添加图例

legend(x=1.3, y=1.4, legend = rownames(dt[-c(1,2),]), bty = “n”,

pch=20 , col=colors_in , text.col = “grey”, cex=1.2, pt.cex=2) 图表, 雷达图

描述已自动生成

相信各位小伙伴对单个基因的分布图能清楚的了解。那小果给大家说一下下面这个组合图的用法,拿sample1来说,其各个基因的表达均较高,尤其是gene1和gene8,算是显著高于其余样品的表达量了。但虽说在gene7、9、10中,它的表达略有降低,但是并非差异显著,所以后续我们可以针对gene1和gene8这两个基因在这三个样本中展开研究。

这只是雷达图在转录组中的一个案例,其余像是蛋白质组学的蛋白质结构、代谢组学的生物含量均可引用该包该样式进行分析,其余具体还有哪些应用场景还需要各位小伙伴开发大脑自行探索了哦。但如果各位不想在可视化上花费太多时间,也可以来小果的云生信平台,里面有多个成熟图形的代码,大家只需要将修改好的数据上传,我们就会自动生成图形哦,还支持颜色和字体的自定义哦~快来加入我们吧!

http://www.biocloudservice.com/home.html