【问题标题】:R color vertices by columnR颜色顶点按列
【发布时间】:2013-07-11 09:23:13
【问题描述】:

我正在使用 iGraph 来绘制图表。我的矩阵中只有两列 - A 和 B。我需要用两种颜色为节点着色 - 这表示属于 A 的节点和属于 B 的节点。例如:

# k is a df with 2 columns – A and B
k_mx <- as.matrix(k)
k_mx_g <- graph.edgelist(k_mx, directed = FALSE)
V(k_mx_g)$color = ?? ( want blue for A and red for B)

请告诉我该怎么做。

谢谢, PD

【问题讨论】:

    标签: r colors igraph vertices


    【解决方案1】:

    假设这个数据框:

    k <-     structure(list(A = 1:4, B = 5:8), 
                     .Names = c("A", "B"), row.names = c(NA, -4L),
                      class = "data.frame")
    

    ...您可以将repeach 参数一起使用。否则,由于参数循环,它们将被依次标记为 c("blue," "red", "blue", "red", "blue", "red", "blue", "red"):

    V(k_mx_g)$color <- rep(c("blue", "red"), each=4)
    

    Gabor 的评论让我提供了这个选项,这似乎更笼统:

    V(k_mx_g)[k$A]$color <- "blue"
    V(k_mx_g)[k$B]$color <- "red"
    

    【讨论】:

    • 不幸的是,如果这有效,那么它只是偶然有效,因为第一列中有 1:4,第二列有 5:8。
    • 这确实是作为一个 data.frame 开始的,它正在通往矩阵的路上。我们被引导相信第一列的所有内容都是“A”,需要分配给“蓝色”,而第二列的所有内容都应该分配给“红色”。该过程涉及多少机会?
    • 嗯,我认为“另一个选项”是正确的,但您必须小心数据框中的数字,否则您将使用因子进行索引。此外,显然,这仅适用于图是二分图的,即 A 列中的顶点没有出现在 B 列中,但我猜张贴者有这样的图,否则这个问题没有意义。
    • DWin:评论不是正确回答这个问题的一种非常方便的方式,但你怎么能确定顶点 1:4 在他的第一列?也许我在这里遗漏了一些东西,不幸的是,海报没有提供任何数据来确定。
    • 我一定遗漏了一些东西,因为我认为使用数据框列值可以解决任何歧义。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多