dxy logo
首页丁香园病例库全部版块
搜索
登录

小小代码造就精美绘图——“瀑布图”

发布于 2022-08-04 · 浏览 2304 · IP 上海上海
这个帖子发布于 2 年零 279 天前,其中的信息可能已发生改变或有所发展。

瀑布图是一种用于展示拥有相同的X轴变量数据、不同的Y轴离散型变量和Z轴数值变量的专业绘图,它可以清晰地展示不同样本对同一差异蛋白的变化关系。

img

备注:X轴变量数据(如不同的指标)、不同的Y轴离散型变量(不同样本相对含量)

需要用到的R包

  • ggplot2 绘图用R包
  • RColorBrewer 包含大量专业绘图色,绘制多样本图的基础
  • reshape2 用于整理数据的R包

绘图步骤

第一步:载入R包

library(ggplot2)

library(RColorBrewer)

library(reshape2)

第二步:导入数据

img

文件命名为Waterfall_Data.csv

data<-read.csv("Waterfall_data.csv",stringsAsFactors=FALSE)

第三步:整理数据

colnames(data)<-c("X_Axis",seq(60,25,-5))plotdata<-melt(data,id.vars = "X_Axis")

第四步:绘制瀑布图

ggplot(plotdata,aes(X_Axis,value,fill=variable))+geom_area(color="black",size=0.25)+facet_grid(variable~.)+theme(text=element_text(size=15,face="plain",color="black"),axis.title=element_text(size=10,face="plain",color="black"),axis.text=element_text(size=10,face="plain",color="black"),legend.position="none")

img

进阶画法(3D瀑布图)

相对于行分面瀑布图,3D瀑布图中不同类别间的差异更为直观,能更好地观察类与类之间的差距。

第一步:载入R包

library(plot3D)

library(RColorBrewer)

第二步:导入数据

data<-read.csv("Facting_Data.csv",check.names =FALSE)

第三步:数据处理

N<-ncol(data)-1plotdata<-data.frame(x=numeric(),y=numeric(),variable=character())for (i in 1:N){tempdata<-data.frame(spline(data[,1],data[,i+1],n=300,method= "natural"))tempdata$variable<-colnames(data)[i+1]plotdata<-rbind(plotdata,tempdata)}#插值处理

plotdata$variable<-as.numeric(plotdata$variable)group<-unique(plotdata$variable)M<-length(group)

第四步:调整颜色

gg_color_hue <- function(n) {hues = seq(15, 375, length = n + 1)hcl(h = hues, l = 65, c = 100)[1:n]}colormap <-rev(gg_color_hue(M))#brewer.pal(M,'RdYlGn')

第五步:绘制3D瀑布图

pmar <- par(mar = c(5.1, 4.1, 4.1,

6.1))perspbox(z=as.vector(0),#add=TRUE,xlim=c(20,70),ylim=c(360,750),zlim=c(0,15),ticktype = "detailed",bty = "f",box = TRUE,colkey = FALSE,theta = -110, phi = 20, d=3)for (i in 1:M){df0<-plotdata[plotdata$variable==group[i],]Ndf<-nrow(df0)df<-rbind(df0,c(df0$x[1],df0$y[Ndf],df0$variable[Ndf]))with(df,polygon3D(x=variable,y=x, z=y, alpha=0.6,col=colormap[i],lwd = 3,add=TRUE,colkey = FALSE))with(df0,lines3D(x=variable,y=x, z=y,lwd = 0.5,col="black",add=TRUE))}colkey (col=colormap,clim=range(plotdata$y),clab = "Z Value", add=TRUE, length=0.5,side = 4)#设置图例

img


备注:X轴变量数据(不同样本)、不同的Y轴离散型变量(不同指标)、Z轴数值变量(指标相对含量)

文/阿趣代谢组学

最后编辑于 2022-10-09 · 浏览 2304

回复4 点赞

全部讨论0

默认最新
avatar
分享帖子
share-weibo分享到微博
share-weibo分享到微信
认证
返回顶部