我有一系列值-0.10100到0.28400(总共120个连续值)。该值代表120个基因的基因表达。在我的网络中,它们代表了TGFB1的相互作用基因。 我正在尝试使用igraph库绘制我的网络。 我想对我的节点颜色有两个效果: 第一个是:根据表示我的属性的值的范围,根据greenred中的基因表达值(绿色为负值,红色为正值)为我的节点着色。然后,我想透明-0.10100到-0.10100范围内的redgreen节点 0.04720。由于我不是R专家,因此在我的网络上遇到如此多的影响时遇到了麻烦。 有人可以帮帮我吗?
我的尝试:
tmp1= read.delim("mynet.txt", header= T) g <- graph.data.frame(tmp1, directed=FALSE) V(g)$name [1] "COL6A3" "PDGFRB" "COL3A1" "COL5A1" "LOXL1" .... g GRAPH UN-- 120 120 -- + attr: name (v/c), GEX (v/c), color (v/c) tmp2= read.delim("myattributes.txt", header= T) GENE S2N COL6A3 0.28400 PDGFRB 0.28100 COL3A1 0.26300 ...... ....... V(g)$GEX=as.numeric(tmp2$S2N[match(V(g)$name,tmp2$GENE)]) V(g)$color=V(g)$GEX
然后不幸的是我停了下来,我无法继续。 有人可以帮帮我吗?
最佳
答案 0 :(得分:1)
您可以创建颜色到调色板的映射。假设您要让负值显示为绿色,将零值显示为白色,而将正值显示为红色,则应该可以使用:
my_palette <- colorRampPalette(c("green", "white", "red"))(n = 10000)
sf <- max(abs(tmp2$S2N))
node.colors <- (tmp2$S2N+sf) / (2*sf) * 10000
plot(g, vertex.color=my_palette[node.colors])
答案 1 :(得分:0)
可能这不是最佳解决方案,但让我们看看它是否对您有用。基本上,你必须分配V(g)$color
一种颜色,而不是你现在正在做的数字。我的解决方案是在连续数据上定义间隔,并为每个间隔分配颜色。要将连续数据(即df $ S2N)映射到分类数据,您可以使用cut
。这是一个例子:
library(igraph)
library(org.Hs.eg.db) # Bioconductor annotation package for human.
set.seed(123)
# create toy network:
g <- barabasi.game(10, directed = FALSE)
# assign random gene ids.
V(g)$name <- sample(keys(org.Hs.eg.db), 10)
# assign the gene symbol to the label attribute:
V(g)$label <- select(org.Hs.eg.db, keys = V(g)$name, columns="SYMBOL")$SYMBOL
plot(g)
# generate toy dataset:
df <- data.frame(GENE=V(g)$label, S2N=sample(seq(-2,2,.1),10,replace=TRUE))
# if you are plotting e.g. fold changes, you may want dark blue for
# FC between -2 and -1, blue for FC between -1 and -.5, grey for -.5 and .5, and so on.
# define colors:
col <- c("darkblue", "blue", "grey", "orange", "red")
# map your continuous data to the intervals you want:
(colc <- cut(df$S2N, breaks = c(-2, -1, -.5, .5, 1, 2), include.lowest = TRUE))
[1] (-1,-0.5] (0.5,1] (-0.5,0.5] (1,2] (0.5,1] (-0.5,0.5]
[7] (-0.5,0.5] (1,2] (1,2] [-2,-1]
Levels: [-2,-1] (-1,-0.5] (-0.5,0.5] (0.5,1] (1,2]
# assign the colors to the network
V(g)$color=col[colc]
plot(g)
请注意keys
和select
来自处理AnnotationDbi
中注释的org.Hs.eg.db
包(它是一个依赖项),但不是必需的。这里仅用于示例。