簡體   English   中英

使用R igraph根據重量繪制邊緣

[英]Plot edges based on weight using R igraph

我正在嘗試在R中使用igraph繪制網絡,其中邊緣按重量排序。 我已經分配了顏色,但是我想要背面的弱邊緣和前面的強邊緣。 有辦法嗎? 謝謝

這是一個可能的解決方案。 這實際上取決於您使用的是什么,因此使用代碼示例可以改善這一點。

基本上,邊緣按出現的順序繪制。 因此,我們需要根據其權重屬性對邊緣進行排序。 在同一張圖中似乎不可能做到這一點,因此可能只需要創建一個具有相同屬性但邊已排序的新圖即可。

g <- graph( c(1,2, 1,3,1,4,1,5,2,3,2,4,2,5,3,4,3,5,4,5), n=5 )
E(g)$weight <- runif(10)

# Generates a the same graph but with edges sorted by weight.
h <- graph.empty() + vertices(V(g))
h <- h + edges(as.vector(t(get.edgelist(g)[order(E(g)$weight),])))
E(h)$weight <- E(g)$weight[order(E(g)$weight)]

E(h)$color <- "red"
E(h)[weight>0.3]$color <- "yellow"
E(h)[weight>0.7]$color <- "green"
plot(h,edge.width=2+3*E(h)$weight)

對我有用的更新版本:

df_edges <- as_data_frame(old_graph, what = "edges")
df_edges <- df_edges[order(df_edges$weight),]
new_graph <- graph_from_data_frame(d = df_edges, vertices = as_data_frame(old_graph, what = "vertices"))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM