【发布时间】:2021-12-28 05:52:38
【问题描述】:
我目前正在使用 networkD3 包的 R forceNetwork 函数,并且我已经正确验证了我的图表的节点和链接数据帧的正确性。
我的节点数据框(node_df)是这样的:
node_id node_type node_size
0 T054717 irrelevant 10
1 T095006 irrelevant 10
2 T088658 irrelevant 10
3 T069179 irrelevant 10
4 T009515 irrelevant 10
5 T152167 irrelevant 10
6 T100447 irrelevant 10
7 T150659 irrelevant 10
...
我的链接数据框(links_df)是这样的:
tid1 tid2 edge_dir
0 37 36 10
1 37 0 10
2 37 1 10
3 37 3 10
...
147 34 35 5
148 7 47 5
149 34 47 5
150 35 47 5
151 36 48 5
152 1 48 5
我这样设置 forceNetwork 函数:
network <- forceNetwork (Links = links_df,
Nodes = node_df,
Source = "tid1",
Target = "tid2",
Value = "edge_dir",
NodeID = "node_id",
Nodesize = "node_size",
Group = "node_type",
colourScale = JS("d3.scaleOrdinal(d3.schemeCategory20);"),
fontSize = 10,
linkDistance = 100,
radiusCalculation = JS(" Math.sqrt(d.nodesize)+6"),
charge = -30,
linkColour = ifelse(links_df$edge_dir == 10, "black","red"),
opacity = 1,
zoom = TRUE,
arrows = ifelse(links_df$edge_dir == 10, TRUE, FALSE),
opacityNoHover = TRUE,
clickAction = NULL)
我正在为函数的 arrows 参数苦苦挣扎。事实上,我想通过检查 Value 参数来指定每个链接是否应该有有向边(箭头 = TRUE)或无向边(箭头 = FALSE)。
在我的例子中,Value 是指名为 edge_dir 的 Links 数据框的一列,它指定边是否应该定向(edge_dir = 10)或不定向(edge_dir = 5)。
查看此 stackoverflow 链接后,specify-colors-for-each-link-in-a-force-directed-network-networkd3
我试过这样设置参数:
arrows = ifelse(links_df$edge_dir == 10, TRUE, FALSE) 但输出图有箭头,那里应该有无向线。
在 linkColour 参数中使用相同的结构:linkColour = ifelse(links_df$edge_dir == 10, "black","red") 它工作正常,有向边是黑色的,而那些应该是无向的,但它们不是,是红色的,如图所示这个graph output image
是否可以通过修改 arrows 参数来显示具有有向和无向边的图形? 谢谢!
【问题讨论】:
-
由于您没有提供任何数据,您应该使用您链接到的页面上的示例进行尝试。它有一个可接受的答案,并允许我们查看结果。我们无法看到您的数据会发生什么,因为我们不在您身边。 (接受答案的示例输出中没有箭头。)
-
我听从了您的建议@IRTFM,并尝试了 forceNetwork 函数 [stackoverflow.com/a/39782310/6304083] 接受的答案代码,并添加了
arrows = ifelse(MisLinks$value > 1, TRUE, FALSE)。输出图的每条边现在都有一个箭头,即使 value -
arrows参数只是一个允许显示箭头的标志。它不是每个链接向量。我认为您应该修改您的 Value 参数。我认为这是与stackoverflow.com/questions/51024363/… BTW 的重复,即使它是重复的,我也要感谢您提出这个问题,因为我以前从未见过这种结构,而且它看起来很迷人。 -
这能回答你的问题吗? forceNetwork networkD3 - Arrow issue
-
arrow参数是全有或全无。要为每个链接打开或关闭箭头,您必须修改底层 JavaScript。