【问题标题】:Plot a "mini" graph from igraph object based on membership根据成员资格从 igraph 对象绘制“迷你”图
【发布时间】:2021-03-09 10:30:44
【问题描述】:

我正在使用 R。假设我有数据(如下)并制作图表:

library(igraph)
file <-data.frame(

"source" = c(
    "John",
    "John",
    "Tim",
    "Tim",
    "Alex",
    "Andrew",
    "Andrew",
    "Andrew",
    "Oliver",
    "Oliver",
    "Oliver",
    "Matt",
    "Steven",
    "Steven",
    "Steven",
    "Matt",
    "Charles",
    "Charles",
    "Charles",
    "Sean",
    "Ted",
    "Ryan",
    "Ryan",
    "Ryan",
    "Ted",
    "Phil",
    "Phil",
    "Phil",
    "Sam",
    "Toby",
    "Toby",
    "Donald",
    "Donald",
    "Donald",
    "Mitch",
    "Mitch",
    "Mitch"),

"target" = c("Sam",
             "Tim",
             "Alex",
             "Matt",
             "Andrew",
             "Sean",
             "Peter",
             "Ben",
             "Kevin",
             "Thomas",
             "Dave",
             "Steven",
             "Kenny",
             "Derek",
             "CJ",
             "Charles",
             "Ivan",
             "Kyle",
             "Andrew",
             "Ted",
             "Ryan",
             "Daniel",
             "Chris",
             "Scott",
             "Phil",
             "Henry",
             "George",
             "Paul",
             "Toby",
             "Donald",
             "Mitch",
             "Jack",
             "Luke",
             "Myles",
             "Elliot",
             "Harvey",
             "Owen")

)

graph <- graph.data.frame(file, directed=F)
graph <- simplify(graph)
plot(graph)

该图有两个不同的部分:“红色”和“黑色”。

有没有办法只绘制“红色”部分?有没有办法只绘制“黑色”部分?

我尝试了以下代码:

g1 = graph
cls = clusters(g1)
g2 <- delete_vertices(g1, V(g1)[cls$membership %in% which(cls$no =="1")])
plot(g2)

但这会返回原始图形。有人可以告诉我我做错了什么吗?是否应该改用 dplyr/sql 来完成?

是否也可以制作一个表格,上面写着:“黑色”有 4 个观察值,“红色”有 34 个观察值?

【问题讨论】:

    标签: r data-visualization cluster-analysis igraph


    【解决方案1】:

    试试这个:

    g2 <- delete_vertices(g1, V(g1)[cls$membership == 2])
    plot(g2, main = "membership 1")
    
    g3 <- delete_vertices(g1, V(g1)[cls$membership == 1])
    plot(g3, main = "membership 2")
    

    获取每个集群的计数:

    cls$csize
    # [1] 34  4
    table(cls$membership)
    #  1  2 
    # 34  4
    

    【讨论】:

      猜你喜欢
      • 2015-10-05
      • 2023-03-30
      • 2021-09-15
      • 1970-01-01
      • 1970-01-01
      • 2019-09-15
      • 1970-01-01
      • 1970-01-01
      • 2021-05-06
      相关资源
      最近更新 更多