在igraph中更改边大小

jjjwad0x  于 2023-01-10  发布在  其他
关注(0)|答案(2)|浏览(237)

我想画一个简单的星形图,图中边的大小取决于代表中心节点(如领导者)和其他节点(如员工)之间感知差异的得分。
我成功地修改了颜色,节点的大小,边的宽度,但没有后者的大小。
你会怎么做?

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)
2mbi3lxu

2mbi3lxu1#

使用ggraph包和 geom_edge_ func'之一(例如geom_edge_arcgeom_edge_diagonal),以便根据与边缘列表中的边缘相关联的数值(此后称为“值”)来使用edge_width参数。

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

此外,ggraph允许您在 geom_edge_ 函数中指定其他边参数,例如edge_alpha = as.numeric(value)

kokeuurv

kokeuurv2#

我认为你想要的是确定顶点的位置,这样你就可以控制边的长度。如果这不是你想要的,那么请解释你所说的边的大小是什么意思。
你没有提供你的数据,所以我们不能准确地使用你的图形。我将使用一个通用星星作为例子。为了控制顶点的位置,你需要使用参数layout。基本函数layout_as_star将把第一个顶点放在中心,其他顶点以相同的距离围绕它等距分布。因为此布局函数将中心顶点放置在(0,0)和围绕中心的单位圆上的剩余节点,很容易调整它,使外部顶点的距离由一个参数控制。2只需将坐标乘以参数,它就会按比例改变距离。我只是在距离上做了些补偿,但你可以用参数。

## 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)

相关问题