根据成员资格从 igraph 对象绘制 "mini" 图
Plot a "mini" graph from igraph object based on membership
我正在使用 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)
但这是 returns 原始图表。有人可以告诉我我做错了什么吗?这应该用 dplyr/sql 代替吗?
是否也可以制作一个 table 表示:“黑色”有 4 个观察值,“红色”有 34 个观察值?
试试这个:
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
我正在使用 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)
但这是 returns 原始图表。有人可以告诉我我做错了什么吗?这应该用 dplyr/sql 代替吗?
是否也可以制作一个 table 表示:“黑色”有 4 个观察值,“红色”有 34 个观察值?
试试这个:
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