WTS_ce/CE中lncRNA_miRNA_mRNA.network图修改节点形状

交付的网络图如下: lncrna_mirna_mrna.network.pdf

/TJPROJ2/GB/PUBLIC/software/GB_TR/mRNA/miniconda3/envs/r_3.5.0/bin/Rscript /TJPROJ6/RNA_SH/shouhou/202407/X101SC21051436-Z01-F004_wts_as/X101SC21051436-Z01-F004.20240614/log/network_ce.R lncRNA_miRNA_mRNA_ce name_lncRNA_miRNA_mRNA.cytoscape.txt /TJPROJ6/RNA_SH/shouhou/202407/X101SC21051436-Z01-F004_wts_as/X101SC21051436-Z01-F004.20240614/log

network_ce.R脚本

args<-commandArgs(TRUE)

type<-trimws(args[1])
output<-trimws(args[2])
path_igraph_ce<-trimws(args[3])

r_script<-paste(path_igraph_ce,'/igraph_ce.R',sep="")
source(r_script)
set.seed(123)

if (type == 'lncRNA_miRNA_mRNA_ce') {
	png("lncRNA_miRNA_mRNA.network.png",type="cairo")
	out<-paste(output,'.top200.txt',sep="")
	fplot4(out)
	pdf("lncRNA_miRNA_mRNA.network.pdf",width = 12, height = 10)
	fplot4(out)
}

igraph_ce.R脚本

library("igraph")
library(ggplot2)
set.seed(123)
fplot4=function(file){
	#=== add triangle to shape
	mytriangle <- function(coords, v=NULL, params) {
		vertex.color <- params("vertex", "color")
	    	if (length(vertex.color) != 1 && !is.null(v)) {
	        	vertex.color <- vertex.color[v]
			vertex.frame.color=NA
		}
		vertex.size <- 1/200 * params("vertex", "size")
		if (length(vertex.size) != 1 && !is.null(v)) {
			vertex.size <- vertex.size[v]
		}
		vertex.frame.color=NA
		symbols(x=coords[,1], y=coords[,2], bg=vertex.color,
			stars=cbind(vertex.size, vertex.size, vertex.size),
			add=TRUE, inches=FALSE)
	}
	add_shape("triangle", clip=shapes("circle")$clip,plot=mytriangle)

	#============================================
	df=read.table(file,header=F)
	df1=data.frame(from=df[,1],to=df[,3])
	g=graph.data.frame(df1,directed=TRUE)
	V(g)$color="#e15850"
#	V(g)[as.vector(df[,1][df[,2]=="up"])]$color="#e15850"
	V(g)[as.vector(df[,3][df[,4]=="lncRNA"])]$color="#8cc464"
	V(g)[as.vector(df[,3][df[,4]=="gene"])]$color="#a4cce4"
#构建椭圆形
	myellipse <- function(coords, v=NULL, params) {
		vertex.color <- params("vertex", "color")
	if (length(vertex.color) != 1 && !is.null(v)) {
		vertex.color <- vertex.color[v]
	}
	vertex.size  <- 1/200 * params("vertex", "size")
	if (length(vertex.size) != 1 && !is.null(v)) {
		vertex.size <- vertex.size[v]
	}

	symbols(x=coords[,1], y=coords[,2], bg=vertex.color,fg = vertex.color,
		circles = vertex.size,
		add=TRUE, inches=FALSE)
	}

	add_shape("ellipse", clip=shapes("circle")$clip,plot=myellipse)
#构建菱形
	mydiamond <- function(coords, v=NULL, params) {
		vertex.color <- params("vertex", "color")
	if (length(vertex.color) != 1 && !is.null(v)) {
		vertex.color <- vertex.color[v]
	}
	vertex.size <- 1/200 * params("vertex", "size")
	if (length(vertex.size) != 1 && !is.null(v)) {
		vertex.size <- vertex.size[v]
	}

	symbols(x=coords[,1], y=coords[,2], bg=vertex.color,fg = vertex.color,
		stars=cbind(vertex.size*3, vertex.size, vertex.size*3,vertex.size),
		add=TRUE, inches=FALSE)
	}
	# clips as a circle
	add_shape("diamond", clip=shapes("circle")$clip,
		plot=mydiamond)
#构建矩形
	myrectangles <- function(coords, v=NULL, params) {
		vertex.color <- params("vertex", "color")
	if (length(vertex.color) != 1 && !is.null(v)) {
		vertex.color <- vertex.color[v]
	}
	vertex.size <- 1/200 * params("vertex", "size")
	if (length(vertex.size) != 1 && !is.null(v)) {
		vertex.size <- vertex.size[v]
	}

	symbols(x=coords[,1], y=coords[,2], bg=vertex.color,fg = vertex.color,
		rectangles = matrix(c(vertex.size*5, vertex.size), byrow = T, nrow = 1),
#        rectangles = cbind(vertex.size, vertex.size*2, vertex.size*2,vertex.size),
		add=TRUE, inches=FALSE)
	}
	# clips as a circle
	add_shape("rectangles", clip=shapes("circle")$clip,
		plot=myrectangles)

	#V(g)$shape="triangle"
	V(g)$shape="rectangles"
	#V(g)[as.vector(df[,1])]$shape="circle"
	V(g)[as.vector(df[,1])]$shape="diamond"
	#V(g)[as.vector(df[,3][df[,4]=="gene"])]$shape="square"
	V(g)[as.vector(df[,3][df[,4]=="gene"])]$shape="ellipse"
	if (length(unique(df[,1]))<3){
		plot(g, layout=layout.fruchterman.reingold,edge.arrow.size=0.1,vertex.shape=V(g)$shape,vertex.color=V(g)$color,vertex.size=10,vertex.label.cex=0.3)
	}else if(length(unique(df[,1]))<=6){
		plot(g, layout=layout.fruchterman.reingold,edge.arrow.size=0.1,vertex.shape=V(g)$shape,vertex.color=V(g)$color,vertex.size=6,vertex.label.cex=0.3)
	}else if(length(unique(df[,1]))<=9){
#		plot(g, layout=layout.fruchterman.reingold,edge.arrow.size=0.1,vertex.shape=V(g)$shape,vertex.color=V(g)$color,vertex.size=4,vertex.label.cex=0.3)
		plot(g, layout=layout.fruchterman.reingold,edge.arrow.size=0.05,vertex.shape=V(g)$shape,vertex.color=V(g)$color,vertex.size=2,vertex.label.cex=0.005,vertex.frame.color=V(g)$color)
#		plot(g, layout=layout.circle,edge.arrow.size=0.1,vertex.shape=V(g)$shape,vertex.color=V(g)$color,vertex.size=6,vertex.label.cex=0.3,vertex.frame.color=V(g)$color)
#		plot(g, layout=layout_random, edge.arrow.size=0.05,vertex.shape=V(g)$shape,vertex.color=V(g)$color,vertex.size=8,vertex.label.cex=0.05,vertex.frame.color=V(g)$color)
	}else{
#		plot(g, layout=layout.fruchterman.reingold,edge.arrow.size=0.02,vertex.shape=V(g)$shape,vertex.color=V(g)$color,vertex.size=4,vertex.label.cex=0.3)
		plot(g, layout=layout.fruchterman.reingold,edge.arrow.size=0.2,vertex.shape=V(g)$shape,vertex.color=V(g)$color,vertex.size=10,vertex.label.cex=1)
	}
#	title(main=name,line=-1)
	#legend(x=-1.5,y=-0.9, pch=c(21,22,24),c("miRNA","mRNA","lncRNA"),cex=0.8,pt.cex=1.5)
	legend(x=-1.5,y=-1.2, fill=c("#e15850","#a4cce4","#8cc464"),c("miRNA","mRNA","lncRNA"),cex=0.8)
}