![](/img/trans.png)
[英]How to plot a network degree to node size and eigenvector to x axis and an attribute to y axis in igraph?
[英]Plot network with size node based on their degree
我創建一個網絡,然后我想根據程度繪制網絡節點大小(更多鏈接 - >更大的節點)。 我嘗試了我在這里找到的代碼。
那是我的代碼:
library(igraph)
# load dataset
net <- read.graph("./dataset.gml", format = c("gml"))
# Generate colors base on media type:
colrs <- c("gray50", "tomato", "gold")
V(net)$color <- colrs[V(net)$media.type]
# Compute node degrees (#links) and use that to set node size:
deg <- degree(net, mode = "all")
V(net)$size <- deg*3
# We could also use the audience size value:
V(net)$size <- V(net)$audience.size*0.6
#change arrow size and edge color:
E(net)$arrow.size <- .2
E(net)$edge.color <- "gray80"
x11()
plot(net)
當我運行此代碼時,我收到此錯誤:
deg < - 度(net,mode =“all”)
度數錯誤(net,mode =“all”):未使用的參數(mode =“all”)
我使用的數據集是悲慘世界:
> dput(net)
structure(list(77, FALSE, c(1, 2, 3, 3, 4, 5, 6, 7, 8, 9, 11,
11, 11, 11, 12, 13, 14, 15, 17, 18, 18, 19, 19, 19, 20, 20, 20,
20, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23,
23, 23, 23, 23, 23, 24, 24, 25, 25, 25, 26, 26, 26, 26, 27, 27,
27, 27, 27, 28, 28, 29, 29, 29, 30, 31, 31, 31, 31, 32, 33, 33,
34, 34, 35, 35, 35, 36, 36, 36, 36, 37, 37, 37, 37, 37, 38, 38,
38, 38, 38, 38, 39, 40, 41, 41, 42, 42, 42, 43, 43, 43, 44, 44,
45, 47, 48, 48, 48, 48, 49, 49, 50, 50, 51, 51, 51, 52, 52, 53,
54, 54, 54, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 56, 56, 57,
57, 57, 58, 58, 58, 58, 58, 59, 59, 59, 59, 60, 60, 60, 61, 61,
61, 61, 61, 61, 62, 62, 62, 62, 62, 62, 62, 62, 63, 63, 63, 63,
63, 63, 63, 63, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 65, 65,
65, 65, 65, 65, 65, 65, 65, 65, 66, 66, 66, 66, 66, 66, 66, 66,
66, 67, 68, 68, 68, 68, 68, 68, 69, 69, 69, 69, 69, 69, 69, 70,
70, 70, 70, 70, 70, 70, 70, 71, 71, 71, 71, 71, 71, 71, 71, 72,
72, 72, 73, 74, 74, 75, 75, 75, 75, 75, 75, 75, 76, 76, 76, 76,
76, 76, 76), c(0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 10, 3, 2, 0, 11,
11, 11, 11, 16, 16, 17, 16, 17, 18, 16, 17, 18, 19, 16, 17, 18,
19, 20, 16, 17, 18, 19, 20, 21, 16, 17, 18, 19, 20, 21, 22, 12,
11, 23, 11, 24, 23, 11, 24, 11, 16, 25, 11, 23, 25, 24, 26, 11,
27, 23, 27, 11, 23, 30, 11, 23, 27, 11, 11, 27, 11, 29, 11, 34,
29, 34, 35, 11, 29, 34, 35, 36, 11, 29, 34, 35, 36, 37, 11, 29,
25, 25, 24, 25, 41, 25, 24, 11, 26, 27, 28, 11, 28, 46, 47, 25,
27, 11, 26, 11, 49, 24, 49, 26, 11, 51, 39, 51, 51, 49, 26, 51,
49, 39, 54, 26, 11, 16, 25, 41, 48, 49, 55, 55, 41, 48, 55, 48,
27, 57, 11, 58, 55, 48, 57, 48, 58, 59, 48, 58, 60, 59, 57, 55,
55, 58, 59, 48, 57, 41, 61, 60, 59, 48, 62, 57, 58, 61, 60, 55,
55, 62, 48, 63, 58, 61, 60, 59, 57, 11, 63, 64, 48, 62, 58, 61,
60, 59, 57, 55, 64, 58, 59, 62, 65, 48, 63, 61, 60, 57, 25, 11,
24, 27, 48, 41, 25, 68, 11, 24, 27, 48, 41, 25, 69, 68, 11, 24,
27, 41, 58, 27, 69, 68, 70, 11, 48, 41, 25, 26, 27, 11, 48, 48,
73, 69, 68, 25, 48, 41, 70, 71, 64, 65, 66, 63, 62, 48, 58),
c(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 13, 12, 11, 10, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 35, 36, 37, 38, 47, 46, 39, 40, 41, 42, 43, 44,
45, 49, 48, 52, 51, 50, 54, 55, 53, 56, 57, 58, 60, 59, 61,
62, 63, 66, 64, 65, 67, 69, 70, 71, 68, 72, 73, 74, 75, 76,
77, 79, 78, 82, 83, 80, 81, 87, 88, 84, 85, 86, 93, 94, 89,
90, 91, 92, 95, 96, 97, 98, 101, 100, 99, 102, 103, 104,
106, 105, 107, 108, 112, 110, 111, 109, 114, 113, 116, 115,
119, 118, 117, 121, 120, 122, 125, 124, 123, 131, 132, 133,
130, 128, 134, 135, 127, 126, 129, 136, 137, 139, 140, 138,
145, 143, 142, 141, 144, 148, 147, 149, 146, 150, 151, 152,
153, 158, 157, 154, 156, 155, 164, 162, 159, 163, 160, 161,
166, 165, 168, 174, 170, 171, 167, 173, 172, 169, 184, 177,
175, 183, 179, 182, 181, 180, 176, 178, 187, 194, 193, 189,
192, 191, 190, 188, 185, 186, 200, 196, 197, 203, 202, 198,
201, 195, 199, 204, 206, 207, 205, 208, 210, 209, 213, 214,
211, 215, 217, 216, 212, 221, 222, 218, 223, 224, 225, 220,
219, 230, 233, 226, 232, 231, 228, 227, 229, 236, 234, 235,
237, 238, 239, 242, 244, 243, 241, 240, 245, 246, 252, 253,
251, 250, 247, 248, 249), c(0, 1, 2, 4, 5, 6, 7, 8, 9, 13,
3, 12, 11, 10, 14, 15, 16, 17, 47, 49, 52, 54, 57, 62, 66,
69, 72, 73, 75, 77, 82, 87, 93, 102, 106, 112, 114, 119,
131, 145, 184, 206, 213, 221, 230, 236, 46, 18, 19, 21, 24,
28, 33, 39, 55, 132, 20, 22, 25, 29, 34, 40, 23, 26, 30,
35, 41, 27, 31, 36, 42, 32, 37, 43, 38, 44, 45, 48, 51, 58,
64, 67, 70, 50, 53, 60, 97, 101, 116, 207, 214, 222, 56,
59, 95, 96, 98, 100, 110, 133, 205, 211, 218, 233, 242, 61,
103, 113, 118, 125, 130, 234, 63, 65, 71, 74, 104, 111, 143,
208, 215, 223, 226, 235, 105, 107, 76, 79, 83, 88, 94, 68,
78, 80, 84, 89, 81, 85, 90, 86, 91, 92, 121, 128, 99, 134,
139, 164, 210, 217, 224, 232, 244, 108, 109, 135, 140, 142,
148, 150, 153, 162, 168, 177, 187, 200, 209, 216, 231, 237,
238, 243, 252, 115, 117, 124, 127, 136, 120, 122, 123, 126,
129, 137, 138, 141, 147, 158, 159, 174, 175, 194, 144, 149,
157, 163, 170, 183, 193, 204, 146, 151, 154, 160, 171, 179,
189, 196, 225, 253, 152, 156, 161, 167, 182, 192, 197, 155,
166, 173, 181, 191, 203, 165, 172, 180, 190, 202, 169, 176,
188, 198, 251, 178, 185, 201, 250, 186, 195, 247, 199, 248,
249, 212, 220, 228, 241, 219, 227, 240, 229, 245, 246, 239
), c(0, 0, 1, 2, 4, 5, 6, 7, 8, 9, 10, 10, 14, 15, 16, 17,
18, 18, 19, 21, 24, 28, 33, 39, 48, 50, 53, 57, 62, 64, 67,
68, 72, 73, 75, 77, 80, 84, 89, 95, 96, 97, 99, 102, 105,
107, 108, 108, 109, 113, 115, 117, 120, 122, 123, 126, 136,
138, 141, 146, 150, 153, 159, 167, 175, 185, 195, 204, 205,
211, 218, 226, 234, 237, 238, 240, 247, 254), c(0, 10, 10,
12, 13, 13, 13, 13, 13, 13, 13, 14, 46, 47, 47, 47, 47, 56,
62, 67, 71, 74, 76, 77, 83, 92, 105, 112, 124, 126, 131,
132, 132, 132, 132, 136, 139, 141, 142, 142, 144, 144, 153,
153, 153, 153, 153, 154, 155, 173, 178, 178, 182, 182, 182,
183, 192, 192, 200, 210, 217, 223, 228, 233, 237, 240, 242,
243, 243, 247, 250, 252, 253, 253, 254, 254, 254, 254), list(
c(1, 0, 1), structure(list(), .Names = character(0)),
structure(list(id = c(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
67, 68, 69, 70, 71, 72, 73, 74, 75, 76), label = c("Myriel",
"Napoleon", "MlleBaptistine", "MmeMagloire", "CountessDeLo",
"Geborand", "Champtercier", "Cravatte", "Count", "OldMan",
"Labarre", "Valjean", "Marguerite", "MmeDeR", "Isabeau",
"Gervais", "Tholomyes", "Listolier", "Fameuil", "Blacheville",
"Favourite", "Dahlia", "Zephine", "Fantine", "MmeThenardier",
"Thenardier", "Cosette", "Javert", "Fauchelevent", "Bamatabois",
"Perpetue", "Simplice", "Scaufflaire", "Woman1", "Judge",
"Champmathieu", "Brevet", "Chenildieu", "Cochepaille",
"Pontmercy", "Boulatruelle", "Eponine", "Anzelma", "Woman2",
"MotherInnocent", "Gribier", "Jondrette", "MmeBurgon",
"Gavroche", "Gillenormand", "Magnon", "MlleGillenormand",
"MmePontmercy", "MlleVaubois", "LtGillenormand", "Marius",
"BaronessT", "Mabeuf", "Enjolras", "Combeferre", "Prouvaire",
"Feuilly", "Courfeyrac", "Bahorel", "Bossuet", "Joly",
"Grantaire", "MotherPlutarch", "Gueulemer", "Babet",
"Claquesous", "Montparnasse", "Toussaint", "Child1",
"Child2", "Brujon", "MmeHucheloup"), maincharacter = c(0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0)), .Names = c("id", "label", "maincharacter"
)), structure(list(value = c(1, 8, 10, 6, 1, 1, 1, 1,
2, 1, 1, 3, 3, 5, 1, 1, 1, 1, 4, 4, 4, 4, 4, 4, 3, 3,
3, 4, 3, 3, 3, 3, 5, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 4,
4, 4, 2, 9, 2, 7, 13, 1, 12, 4, 31, 1, 1, 17, 5, 5, 1,
1, 8, 1, 1, 1, 2, 1, 2, 3, 2, 1, 1, 2, 1, 3, 2, 3, 3,
2, 2, 2, 2, 1, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 1, 1, 1,
2, 3, 2, 2, 1, 3, 1, 1, 3, 1, 2, 1, 2, 1, 1, 1, 3, 2,
1, 1, 9, 2, 2, 1, 1, 1, 2, 1, 1, 6, 12, 1, 1, 21, 19,
1, 2, 5, 4, 1, 1, 1, 1, 1, 7, 7, 6, 1, 4, 15, 5, 6, 2,
1, 4, 2, 2, 6, 2, 5, 1, 1, 9, 17, 13, 7, 2, 1, 6, 3,
5, 5, 6, 2, 4, 3, 2, 1, 5, 12, 5, 4, 10, 6, 2, 9, 1,
1, 5, 7, 3, 5, 5, 5, 2, 5, 1, 2, 3, 3, 1, 2, 2, 1, 1,
1, 1, 3, 5, 1, 1, 1, 1, 1, 6, 6, 1, 1, 2, 1, 1, 4, 4,
4, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 2, 1, 1, 2,
2, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)), .Names = "value")),
<environment>), class = "igraph")
我不明白問題是什么。
搜索“學位”時,您可以找到兩種學位函數。 就我而言,我可以這樣看,
?degree
Help on topic 'degree' was found in the following packages:
Compute the Degree Centrality Scores of Network Positions
(in package sna in library C:/Program Files/R/R-3.3.1/library)
Degree and degree distribution of the vertices
(in package igraph in library C:/Program Files/R/R-3.3.1/library)
sna包中的degree函數沒有“mode”參數,但是igraph有它。
所以你可以讓你的R腳本使用“::”來識別它的來源。
> deg <- degree(net, mode="all")
Error in degree(net, mode = "all") : unused argument (mode = "all")
> deg <- igraph::degree(net, mode="all")
>
享受R !!
問題是您在上面加載的幾個庫之間存在沖突。 解決方案是在被稱為井的degree
函數的命令中定義的是igraph
。
您可以按如下方式指定它: library_name :: function_name
在您的情況下,library_name值為igraph
,function_name為degree
,因此您的代碼應如下所示:
deg <- igraph::degree (net, mode = "all")
它的工作原理。
此方法非常有用,但它不應該創建沖突(兩個不同的包中的函數名稱相同),因此請指定要與::
一起使用的包。
該庫ade4
包含一個名為函數within
和base
的R環境中已經包含一個函數within
。 當然, within
的ade4
具有比不同的動作within
的base
。
所以,如果在我的工作環境,我裝這兩個庫( base
和ade4
),我想使用的功能within
,我將有A R執行沖突。 這是由於2個函數具有相同的名稱而R不知道您想要使用哪個庫。 在這種情況下,您必須指定相關的庫。
在這里,我們知道庫,我們不想嘗試分離使用detach的那個detach("package:ade4")
。
在編寫代碼時,可以知道要用於函數的庫,因此無需分離包,您可以執行以下操作之一:
要執行base
的within
函數,那么: base::within()
要執行ade4
的within
函數,那么: ade4::within()
我希望你能回答並解釋清楚。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.