【问题标题】:Plot subnetwork over a network在网络上绘制子网
【发布时间】:2016-05-17 10:08:18
【问题描述】:

我正在使用 gephi 进行大型网络可视化。我有一个包含 16 000 个节点和 100 000 个边的数据集。我已经在 gephi 和 igraph 中都绘制了我的网络。尽管对于大型网络可视化是一个更好的选择。我想绘制一个子网络,它是这个完整网络的一部分,并仅突出显示大型网络上的那个子网络。有没有办法在 gephi 或 r 中的网络上绘制网络。

这是我的 r 脚本

library(igraph)
g=barabasi.game(10,power=0.5)
plot(g)
g1=induced.subgraph(g,1:3)

这里g1是g的一部分。那么我可以通过只突出显示g1的部分来突出显示我的子图g1而不是g。

【问题讨论】:

  • 基本策略是找出 plot.igraph 函数使用了三个主要范例中的哪一个,然后使用适当的工具覆盖图形元素。然后你需要弄清楚坐标系可能是什么。我不确定第二个任务是否容易。绘图函数是基本图形,但仅使用 par(new=TRUE) 即可满足您的要求,但不会将叠加层的“1”节点与第一遍的“1”节点对齐。
  • 我没听懂你@42- 请你提供一个简短的例子..??
  • plot(g);par(new=TRUE); plot(g1) ...我想可能不是你想要的。也许您只是想清楚地为子图着色?
  • 或许:plot(g, vertex.color=c(rep("red",3),rep("blue",7)) )
  • @42- 是的,我想清楚地为子图着色。但是我们可以指定子图名称而不是指定整数..??这个例子只是我的例子中的一个小例子,我从我的原始图中得到了子图,我想为那个子图着色。

标签: r igraph gephi


【解决方案1】:

42-的答案和here的答案组合OK

library(igraph)
g=barabasi.game(10,power=0.5)%>%
  set_vertex_attr("color", value = c(rep("red",10)))
g1=induced.subgraph(g,1:3)
V(g)$color[V(g1)] = "green"
plot(g)
write.graph(g,'barabasi.graphml', format=c('graphml')) # graphml can be opened by Gephi

诱导子图的顶点为绿色

【讨论】:

    【解决方案2】:

    这实际上只是对?vertex_attr中示例的小修改

     g <- barabasi.game(10,power=0.5) %>%
      set_vertex_attr("color", value = c(rep("red",3),rep("blue",7))) %>%
      set_vertex_attr("label", value = letters[1:10])
    vertex_attr(g, "label")
    vertex_attr(g)
    plot(g)
    

    我不理解下面的 cmets。我知道我已经完成了所要求的:

    png(); plot(g); dev.off()
    

    【讨论】:

    • 但是在这里我已经指定了子图中的节点,只有第一个三个波德。当我在大型数据集上执行此操作时,我的子图中将有这么多的节点和边。然后,我们可以指定图和子图的名称,而不是在 rep 函数中指定 3 和 7,以便在网络上对其进行着色..??
    • 这很好,但是如果我想指定子图名称并给它一个颜色,有什么办法。
    • 我已经编辑了我的问题。 g1 是我的子图,我想在我的原始网络 g 上突出显示 g1
    • 我不知道“在我的原始网络 g 上突出显示 g1”是什么意思。更详细地描述您需要看到的差异(或者可能指向一个成功的人的可访问示例。
    • IMO 他想在g 的节点上用不同的颜色绘制与g1 对应的节点
    猜你喜欢
    • 2017-03-18
    • 2017-02-03
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-09
    • 2016-07-31
    相关资源
    最近更新 更多