我对R还比较陌生,碰到了一个问题。
在iGraph
中是否可能在节点上打印热图?
我知道可以用彩色正方形或圆形来表示,但是否可能打印小的热图呢?
下面是绘制当前图形的代码:
# create graph
graph <- graph.data.frame(network[,1:2])
vertex_names <- get.vertex.attribute(graph,"name")
# define node attributes
V(graph)$label.font <- 1
V(graph)$label.font[which(element_types[vertex_names,"type"]=="PRIMARIES")] <- 2
V(graph)$label.font[which(element_types[vertex_names,"type"]=="REACTION")] <- 2
V(graph)$label <- element_types[vertex_names,"label"]
V(graph)$color <- element_types[vertex_names,"color"]
V(graph)$size <- as.integer(element_types[vertex_names,"size"]*20)
V(graph)$label.cex <- element_types[vertex_names,"weight"]
V(graph)$frame.color <- "gray"
V(graph)$frame.color[which(element_types[vertex_names,"type"]=="PRIMARIES")] <- "white"
V(graph)$frame.color[which(element_types[vertex_names,"type"]=="PATHWAY")] <- "white"
V(graph)$frame.color[which(element_types[vertex_names,"type"]=="PRODUCTS")] <- "white"
V(graph)$frame.width <- 10
V(graph)$shape <- "square"
V(graph)$shape[which(element_types[vertex_names,"type"]=="REACTION")] <- "circle"
V(graph)$label.color <- "black"
V(graph)$label.color[which(element_types[vertex_names,"type"]=="PRIMARIES")] <- "darkred"
V(graph)$label.color[which(element_types[vertex_names,"type"]=="PATHWAY")] <- "darkgreen"
V(graph)$label.color[which(element_types[vertex_names,"type"]=="REACTION")] <- "darkorange3"
E(graph)$color <- "red"
E(graph)$color[which(network[,3]=="out")] <- "blue"
E(graph)$color[which(network[,3]=="external")] <- "darkgreen"
E(graph)$arrow.size <- 0.5
layout <- layout.auto(graph)
plot.igraph(graph,layout=layout,main=pathways[pathway_id,"COMMON-NAME"])
此外,我有一个矩阵列表,可以绘制成热力图。这些矩阵的外观如下:
[[1]]
TotalSNP HighSNP ModerateSNP PromotorSNP
[1,] 1 0 0 1
[2,] 3 0 2 1
[3,] 5 0 2 3
[4,] 1 0 0 1
[5,] 7 0 4 3
[6,] 3 0 3 0
[7,] 4 0 1 3
[8,] 3 0 2 1
[[2]]
TotalSNP HighSNP ModerateSNP PromotorSNP
[1,] 3 0 1 2
[2,] 0 0 0 0
[[3]]
TotalSNP HighSNP ModerateSNP PromotorSNP
[1,] 0 0 0 0
[2,] 0 0 0 0
请问是否可以将这些矩阵绘制成顶点的热图?
示例数据:
FinalList <- list(structure(c(1, 3, 5, 1, 7, 3, 4, 3, 0, 0, 0, 0, 0, 0, 0,
0, 0, 2, 2, 0, 4, 3, 1, 2, 1, 1, 3, 1, 3, 0, 3, 1), .Dim = c(8L,
4L), .Dimnames = list(NULL, c("TotalSNP", "HighSNP", "ModerateSNP",
"PromotorSNP"))), structure(c(3, 0, 0, 0, 1, 0, 2, 0), .Dim = c(2L,
4L), .Dimnames = list(NULL, c("TotalSNP", "HighSNP", "ModerateSNP",
"PromotorSNP"))), structure(c(0, 0, 0, 0, 0, 0, 0, 0), .Dim = c(2L,
4L), .Dimnames = list(NULL, c("TotalSNP", "HighSNP", "ModerateSNP",
"PromotorSNP"))))
矩阵的大小可能会有所不同,始终为4列,但行数可以从0行到10行不等。
graph <- graph.data.frame(network[,1:2])
版本0.6.4中的顶点形状是否包含在此函数中?我还没有找到它。 - Henkesdput()
或textConnection()
包含玩具数据,参见 https://dev59.com/eG025IYBdhLWcg3whGSx。这对你来说可能是一个小问题,但在许多情况下,需要花费5-10分钟来想出一些有意义的玩具数据,而只需1分钟来回答问题。如果你有一个包含数据的可重现的例子,你获得答案的机会将大大增加。 - Gabor Csardi