如何重建网络,使其保持相同的属性和形状,但节点位于不同的位置?

时间:2019-05-05 21:12:17

标签: r igraph

我目前拥有一个节点数和边缘数与以下类似的网络:

 set.seed(12)
 net <- sample_gnp(20, 1/4)
 V(net)$a <- sample(c(0, 1), vcount(net), replace = TRUE, prob = c(0.3, 0.7))
 V(net)$b <- sample(c(0, 1), vcount(net), replace = TRUE, prob = c(0.5, 0.5))
 V(net)$color <- V(net)$a + 4
 plot(net)

这将创建具有独特形状的独特网络。有没有办法我只能随机移动此网络中的20个节点并保持形状?我希望网络在外观上看起来相同,但节点不同(坐标(a,b)处的节点A被节点G取代,并且它们的边数相同)。因此,理想情况下,我希望图形进行如下更改:(黄色到蓝色节点的比例相同,但是您可以说它们在移动的同时保持了形状)

Change after Rearrangement

2 个答案:

答案 0 :(得分:0)

此想法是将布局添加为其他节点属性,这些属性保持不变。

  l <- layout_nicely(net)
  V(net)$x <- l[,1]
  V(net)$y <- l[,2]

按照 same 模式重新组合其他属性,以保持属性束不变。

  pattern <- sample(1:vcount(net))
  net2 <- net
  V(net2)$a <- V(net2)$a[pattern]
  V(net2)$b <- V(net2)$b[pattern]
  V(net2)$color <- V(net2)$color[pattern]

现在,如果您绘制结果,则希望最终得到所需的输出。

  par(mfrow = c(1,2))
  plot(net)
  plot(net2)

答案 1 :(得分:0)

我不确定您在寻找什么,但是这里有两个其他选择。

旋转图形

In [9]: df.columns = new_cols

In [10]: df
Out[10]:
Empty DataFrame
Columns: [Event, Name1, Job1, Name2, Job2, Name3, Job3, Name4, Job4, Name5, Job5, Name6, Job6]
Index: []

Rotated graph

左右翻转

apiVersion: v1
kind: Secret
metadata:
  name: {{ template "helm-random-secret.fullname" . }}
  annotations:
    "helm.sh/hook": "pre-install"
    "helm.sh/hook-delete-policy": "before-hook-creation"
  labels:
    app: {{ template "helm-random-secret.name" . }}
    chart: {{ template "helm-random-secret.chart" . }}
    release: {{ .Release.Name }}
    heritage: {{ .Release.Service }}
data:
  some-password: {{ default (randAlphaNum 10) .Values.somePassword | b64enc | quote }}

Flipped Graph