用R语言画3D条形图
我暂时找到的能画3D条形图的R语言包就有四个,接下来我们分别比较一下它们的优劣
library(rgl)
library(scatterplot3d)
library(epade)
library(latticeExtra)
数据塑形包(reshape2)也需要加载
library(reshape2)
第一步读入数据
a=read.table("vj-all",header=T)
数据形式如下
我们需要以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]))
怎么评价这个图呢,它的确能很好的展示我们的数据,但是我研读了源码也找不到该如何把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")
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)
不知道为什么,大家居然觉得这个好看,那我就不解释最后一个包(latticeExtra)了。