我想画一个简单的星形图,图中边的大小取决于代表中心节点(如领导者)和其他节点(如员工)之间感知差异的得分。
我成功地修改了颜色,节点的大小,边的宽度,但没有后者的大小。
你会怎么做?
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)
2条答案
按热度按时间2mbi3lxu1#
使用
ggraph
包和 geom_edge_ func'之一(例如geom_edge_arc
、geom_edge_diagonal
),以便根据与边缘列表中的边缘相关联的数值(此后称为“值”)来使用edge_width参数。此外,
ggraph
允许您在 geom_edge_ 函数中指定其他边参数,例如edge_alpha = as.numeric(value)
。kokeuurv2#
我认为你想要的是确定顶点的位置,这样你就可以控制边的长度。如果这不是你想要的,那么请解释你所说的边的大小是什么意思。
你没有提供你的数据,所以我们不能准确地使用你的图形。我将使用一个通用星星作为例子。为了控制顶点的位置,你需要使用参数
layout
。基本函数layout_as_star
将把第一个顶点放在中心,其他顶点以相同的距离围绕它等距分布。因为此布局函数将中心顶点放置在(0,0)和围绕中心的单位圆上的剩余节点,很容易调整它,使外部顶点的距离由一个参数控制。2只需将坐标乘以参数,它就会按比例改变距离。我只是在距离上做了些补偿,但你可以用参数。现在每个外部顶点都有一个权值,但是我们需要为中心顶点设置一个权值,因为我们不希望它移动,所以我们使用权值1。