【发布时间】:2012-10-19 06:38:54
【问题描述】:
我是 R 和 iGraph 的新手。我正在尝试使列位置 #1 中的顶点以特定颜色显示。
我的数据来自 CSV,如下所示:
CL1920 202.80 V66.7 198.89 511.9 799.02 401.9 696.1 388.01 202.80
RM119041 331.82 294.10
RM38755 331.82 294.10 276.0 331.0 294.10
HK54701 331.82 294.10 276.0 331.0 294.10 401.9 V10.51
....
我的情节脚本看起来像这样:
dat <- read.csv("data.csv", header =F)
g <- graph.data.frame(dat, directed = F)
colCount <- 1+ count.fields("dat.csv", sep = ",")
V(g)$label <- NA
set.seed(10)
par <- par()$mar; par(mar=rep(0, 4))
plot (g, layout = layout.fruchterman.reingold,
vertex.frame.color = "#FFFFFF",
vertex.size = 5,
edge.width = 2.5+ (log(colCount)/max(log(colCount))),
edge.color = "Grey60")
我尝试设置 vertex.color 失败。像这样的例子似乎默认为“浅蓝色”
V(g)$color <- ifelse (V(g)$V1, "red", "blue")
有人能指出正确的方向吗?
【问题讨论】:
-
示例数据看起来很乱。它是一张桌子吗?
-
“不成功”是什么意思?
V(g)$V1是什么?vertex.color的行为与vertex.frame.color完全一样,所以如果你可以设置其中一个,你也可以设置另一个。 -
我认为数据是有效的。这是一个“集合列表”,行中的第一个元素是唯一的对象 ID,以下行项目是 0-n 个成员。 V(g)$V1 试图解决行的“第 1 列”(对象 ID)...我怀疑我的语法非常错误,因此我的
ifelse语句被忽略了。我希望 ObjectID 顶点与成员的颜色不同。 -
我不确定您所说的“有效”是什么意思。
graph.data.frame()通常用于表,其中前两列定义边缘。所以你的第一个优势是从'CL1920'到'202.80'?您的示例中也没有V1属性,并且您在代码中引用了它。同样,您的示例(代码、数据或两者)搞砸了。 -
博文中的样本数据代表数据集。是的,第一个边是 CL1920 到 202.80。第二个边缘是 CL1920 到 V66.7,依此类推。如果 CL1920 或 RM119041 或 RM38755 等,我想设置 vertex.color="red"。我不清楚如何为 g[[,1]] 分配一个 vertex.color,为 g[[,2:]] 分配另一个
标签: r colors conditional igraph vertex