【问题标题】:igraph fixed node coordinates layoutigraph 固定节点坐标布局
【发布时间】:2012-06-30 12:13:30
【问题描述】:

我发现这个answer 非常有用。它可以帮助我绘制网络/图形并选择图中节点的坐标。

但是,布局将坐标重新调整为 -1 到 1。首先,我试图找出它是如何做到这一点的,但无法做到。它会做这样的事情吗??

(coordinate - mean(coordinates))/(coordinate + mean(coordinates)

第二有没有办法保持原来的坐标?我想用图表来绘制坐标轴,所以不想让顶部重新调整所有内容。

【问题讨论】:

    标签: r igraph


    【解决方案1】:

    你第一个问题的答案在plot.igraph函数的源码中;在 R 提示符中键入 plot.igraph 以获取完整的源代码。里面有一段写着:

    layout <- layout.norm(layout, -1, 1, -1, 1)
    

    layout.normigraph 的另一个功能,它为您创造了奇迹;输入layout.norm 看看它是如何工作的。

    现在,第二个问题的答案很简单;只需将rescale=F 传递给plot 的参数,这使得igraph 跳过plot.igraph 中调用layout.norm 的整个分支,因此它将使用您的原始坐标。然后,您可以像往常一样使用xlimylim 来设置X 轴和Y 轴的范围。

    【讨论】:

    • 非常感谢您的帮助,现在检查源代码。尽管ylim=c(0,6) 使xlim 范围也变为6,但轴限制似乎是捆绑在一起的。这很烦人,但这是一个飞跃,再次感谢。
    • @user1320502:设置 asp=FALSE 以避免默认的 1:1 纵横比。
    • 为什么我设置rescale=FALSE时没有任何输出?
    • 谢谢!我用rescale=FALSE实现了这个方法,必须同时设置xlim, ylim,因为默认的xlim and ylim0,1
    【解决方案2】:
      set.seed(111)
      ig <- graph_from_data_frame(as.data.frame(matrix(sample(letters,40,rep=TRUE),nc=2)))
      set.seed(123)
      ig.layout <- layout.fruchterman.reingold(ig)
      rownames(ig.layout) <- V(ig)$name
      par(bg="white",mar=c(0,0,0,0),oma=c(0,0,0,0))
      plot.igraph(ig,layout=ig.layout,vertex.color=adjustcolor("gray",alpha.f=0.5),rescale=FALSE,xlim=c(4,11),ylim=c(4,11))
      set.seed(321)
      ig.sub <- subgraph(ig,sample(V(ig)$name,5))
      plot.igraph(ig.sub,layout=ig.layout[V(ig.sub)$name,],add=TRUE,vertex.color=adjustcolor("orange",alpha.f=0.5),rescale=FALSE)
    

    此代码输出图形,其中橙色节点是稍后添加的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-27
      • 2021-06-14
      相关资源
      最近更新 更多