用R语言画3D条形图

用R语言画3D条形图

我暂时找到的能画3D条形图的R语言包就有四个,接下来我们分别比较一下它们的优劣

library(rgl)

library(scatterplot3d)

library(epade)

library(latticeExtra)

数据塑形包(reshape2)也需要加载

library(reshape2)

第一步读入数据

a=read.table("vj-all",header=T)

数据形式如下

用R语言画3D条形图398

我们需要以pos_V作为X轴,pos_J作为Y轴,然后后面的数据作为Z轴条形的高度。

dat=a[,1:3]

我们只挑取第一个H.1这个个体的数据来作图

一、scatterplot3d包里面的scatterplot3d函数画的3D条形图,它接受一个X,Y,Z变量组合的数据框来描述数据。

rbc <- rainbow(nrow(dat))

scatterplot3d(dat,type='h',lwd=5,pch='',color=rbc,box=F, xlab = "V-gene", ylab = "J-gene", zlab = "Percent",y.ticklabs=unique(dat[,2]),x.ticklabs = unique(dat[,1]))

用R语言画3D条形图931

怎么评价这个图呢,它的确能很好的展示我们的数据,但是我研读了源码也找不到该如何把X轴的坐标标记弄好,所以就排除它了。

二、rgl包里面的plot3d包画3D条形图,它接受一个X,Y,Z变量组合的数据框来描述数据。

plot3d(dat,type='h',lwd=5,pch='',col=rbc,box=F, xlab = "V-gene", ylab = "J-gene", zlab = "Percent")

用R语言画3D条形图1336

X,Y,Z轴的坐标标记都很难调整,而且画的好丑,也排除掉。

三、epade包里面的bar3d.ade函数画3D条形图,它接受一个矩阵来描述数据。

par(las=2,cex=1.5)

tmp=dcast(dat,pos_V~pos_J)     #这里是把长形数据变成宽数据

data=as.matrix(tmp[,-1])

rownames(data)=tmp[,1]

bar3d.ade(t(data), wall=6,ylab = "Percent",zw=0.3)

用R语言画3D条形图1771

不知道为什么,大家居然觉得这个好看,那我就不解释最后一个包(latticeExtra)了。

Comments are closed.