三元散点图

三元散点图

目的:绘制NMF, 细胞比例,WGCNA的相关性三元散点图

工作路径:/media/sdc/yueyao/project/20200405_pearson

输入文件格式

OUT_IDSoilRootRhizosphereave_raenrichment
OTU_10050000none
OTU_1011000.0175020.005834none
OTU_101500.00640100.002134none
OTU_1016000.0262540.008751none
OTU_10220000none
OTU_1023000.0087510.002917none
OTU_10240000none
OTU_10250000none
OTU_10260000none
OTU_10270000none
OTU_10290000none
OTU_103200.00640100.002134none

作图代码如下

install.packages("ggtern")

## 加载ggtern包
library("ggtern")

#读入数据,存到data变量中
data<-read.table("result.xls",header = T,sep = " ",row.names = 1)

#查看数据框data的前6行
head(data)

#建立数据的映射关系,绘制三元图
p1<-ggtern(data=data,aes(x=Root,y=Soil,z=Rhizosphere))+
 geom_point(aes(size=ave_ra,color=enrichment),alpha=0.8)
p1

#手动设置点的颜色,“土壤”褐色,“根际”橙色,“根”绿色,未能显著富集到的为灰色
p2<-p1+scale_colour_manual(values = c("grey", "#f68b23","#00a070","#7e532f"))
p2

#尝试不同的主题
p3<-p2+theme_minimal()+
 theme_legend_position(x = "topleft")
p3
p4<-p2+theme_bw()+
 theme_legend_position(x = "tr")
p4
p5<-p2+theme_void()+
 theme_legend_position(x = "tr")
p5

#保存图表为pdf格式
ggsave("p5.pdf",width = 4.4,height = 4,units = "in")

输出图片格式

01

图形计算的是每一个值占三个成分值间的比例,如果分别为1,1,1则该点的位置会出现在三角形的正中心,因为各占比例1/3。按照逆时针顺序从左至右分别表示第一个成分的比例Soil,第二个成分的比例Root,第三个成分的比例Rhizo。ave_ra表示点的大小,是三个成分的平均值,enrichment表示该OUT是否在某一成分富集。

实际调整后的代码如下

#安装ggtern包
#install.packages("ggtern")

## 加载ggtern包
library("ggtern")
library("ggrepel")

setwd("/media/sdc/yueyao/project/20200405_pearson")


input_file <- "pearson_v7.xls"
output_file_prefix <- "v8"

#实际数据代码
data<-read.table(input_file,header = T,sep = " ",row.names = 1)
#排序
data2 = data[order(data$cor_th,data$av_cor,decreasing=F),]

#建立数据的映射关系,绘制三元图
p1<-ggtern(data=data2,aes(x=NMF_Cell,y=NMF_Moudle,z=Cell_Moudle))+
 geom_point(aes(size=av_cor,color=av_cor),alpha=0.8)
p1
ggsave(paste(output_file_prefix,".p1.pdf",sep=""),width = 4.4,height = 4,units = "in")
#手动设置点的颜色,“土壤”褐色,“根际”橙色,“根”绿色,未能显著富集到的为灰色
p2<-p1+scale_colour_gradient2(low="#313695", mid="#E0F3F8",high="#A50026")
p2
ggsave(paste(output_file_prefix,".p2.pdf",sep=""),width = 4.4,height = 4,units = "in")

#尝试不同的主题
p3<-p2+theme_minimal()+
 theme_legend_position(x = "topleft")
p3
ggsave(paste(output_file_prefix,".p3.pdf",sep=""),width = 4.4,height = 4,units = "in")

p4<-p2+theme_bw()+
 theme_legend_position(x = "tr")
p4
ggsave(paste(output_file_prefix,".p4.pdf",sep=""),width = 4.4,height = 4,units = "in")
p5<-p2+theme_void()+
 theme_legend_position(x = "tr")
p5

#保存图表为pdf格式
ggsave(paste(output_file_prefix,".p5.pdf",sep=""),width = 4.4,height = 4,units = "in")

效果如下

02

python包参考路径:https://github.com/marcharper/python-ternary

原文地址:https://www.cnblogs.com/raisok/p/12652806.html