【发布时间】:2018-04-14 16:47:02
【问题描述】:
我正在尝试根据虚拟变量 [color_thresh] 为顶点着色。数据如下所示:
我尝试了几种建议的方法,但我能做的最接近(也是最简单)的方法如下:
这是我复制数据的代码和上图:
library(igraph)
library(data.tree)
Level_0 = c("TAC_310B_124","TAC_310B_124","TAC_310B_124","TAC_310B_124","TAC_310B_124","TAC_310B_124","TAC_310B_124","TAC_310B_124","TAC_310B_124")
Level_1 = c("","SC_776E_86","SS_A66D_9","SC_776E_86","SC_776E_86","SC_776E_86","SC_776E_86","SC_776E_86","SC_776E_86")
Level_2 = c("","","","TGW_1DD0_42","TGW_1DD0_42","TGW_1DD0_42","TGW_1DD0_42","TGW_1DD0_42","TGW_1DD0_42")
Level_3 = c("","","","","CORB_F2E4_17","CORB_F2E4_22","CORB_AE16_10921","CORB_AE16_10921","CORB_AE16_10921")
Level_4 = c("","","","","","","","CORB_D81E_45","CORB_D81E_45")
Level_5 = c("","","","","","","","","SC_B949_3156")
color_thresh = c(1,0,0,0,0,0,1,0,1)
dataset <- data.frame(Level_0,Level_1,Level_2,Level_3,Level_4,Level_5,color_thresh)
dataset$pathString <- paste(dataset$Level_0,
dataset$Level_1,
dataset$Level_2,
dataset$Level_3,
dataset$Level_4,
dataset$Level_5,
sep = "/")
g <- as.Node(dataset)
g <- as.igraph(g, directed=TRUE)
V(g)$color <- ifelse(dataset$color_thresh==1, "red", "green")
plot.igraph(g, vertex.label.color="black", vertex.label.dist=0, vertex.label.family="Helvetica", vertex.frame.color="white", vertex.size=25, layout=layout_as_tree)
当我按 [color_thresh] 对数据框进行排序时,颜色会发生变化,但仍然没有给我正确的颜色。 任何帮助我理解条件着色如何工作的 cmets 都非常感谢!非常感谢您。
【问题讨论】:
-
你必须根据你的节点对颜色进行排序。
-
感谢您的评论,patL,但您能更具体一点吗?如何根据节点对颜色进行排序?
-
如果您生成了一个名为
colors的颜色矢量,则可以使用V(g)$color[colors]完成,它会根据颜色矢量对颜色进行排序。 -
@Daniel Safai 用另一种方法编辑了我的答案
-
第一种方法更好,因为 color_thresh 变量是动态的,因此图形必须使用最新值更新颜色。再次感谢!我永远不会想出像你第一个那样优雅的解决方案。