【问题标题】:Change edge size in igraph更改 igraph 中的边缘大小
【发布时间】:2023-01-09 07:20:25
【问题描述】:

我想绘制一个简单的星图,其中边的大小取决于代表中心节点(例如领导者)和其他节点(例如其员工)之间感知差异的分数。

我成功地修改了颜色、节点的大小、边缘的宽度,但没有修改后者的大小。

你会怎么做?

library(igraph)
nodes <- read.csv("exemple_nodes.csv", header=T, as.is=T)
links <- read.csv("exemple_edges.csv", header=T, as.is=T)
st <- graph_from_data_frame(d=links, vertices=nodes, directed=T)
plot(st, vertex.color=V(st)$perception.type)

【问题讨论】:

  • 如果您需要进一步的帮助,请通过使用dput(nodes)dput(links) 提供您的数据来发帖reproducible

标签: r size igraph edges


【解决方案1】:

使用 ggraph 包和其中之一geom_edge_func'(例如,geom_edge_arcgeom_edge_diagonal),以便使用边宽参数,取决于边缘列表中与边缘关联的数值(以下简称“值”)。例如:

  ggraph::ggraph(st) +
  
    ggraph::geom_edge_diagonal(aes(edge_width = as.numeric(value)) )

此外,ggraph 允许您在geom_edge_func',例如edge_alpha = as.numeric(value)

【讨论】:

    【解决方案2】:

    思考你想要的是定位顶点,这样你就可以控制长度的边缘。如果这不是您想要的,请解释您所说的边缘“大小”的含义。

    您不提供您的数据,因此我们无法准确使用您的图表。我将使用通用星图作为示例。为了控制顶点的放置,您需要使用layout参数。基本函数layout_as_star 会将第一个顶点放在中心,其他顶点围绕它等距放置在相同的距离.由于此布局函数将中心顶点放置在 (0,0),其余节点位于围绕中心的单位圆上,因此很容易调整它,使外部顶点的距离由参数控制。只需将坐标乘以参数,它就会按比例改变距离。我只是弥补了距离,但你可以使用你的参数。

    ## Make up perception parameter
    set.seed(271828)
    Perception = sample(4, 9, replace=T)
    Perception
    [1] 2 3 4 4 1 4 2 2 1
    

    现在每个外部顶点都有一个权重,但我们需要为中心顶点分配一个权重。我们不希望它移动,所以我们使用 1 的权重。

    Weight = c(1, Perception)
    LO = layout_as_star(S10)
    LO = LO*Weight
    plot(S10, layout=LO)
    

    【讨论】:

      猜你喜欢
      • 2014-04-13
      • 1970-01-01
      • 2016-11-29
      • 1970-01-01
      • 1970-01-01
      • 2011-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多