简体   繁体   English

根据程度根据大小节点绘制网络

[英]Plot network with size node based on their degree

I create a network and then I would like to plot network nodes size based on degree (more links -> larger node). 我创建一个网络,然后我想根据程度绘制网络节点大小(更多链接 - >更大的节点)。 I try the code thati I found here . 我尝试了我在这里找到的代码。

That's my code: 那是我的代码:

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)

When I run this code I get this error: 当我运行此代码时,我收到此错误:

deg <- degree(net, mode = "all") deg < - 度(net,mode =“all”)

Error in degree(net, mode = "all") : unused argument (mode = "all") 度数错误(net,mode =“all”):未使用的参数(mode =“all”)


The dataset I used is Les Miserables: 我使用的数据集是悲惨世界:

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

I don't understand what the problem is. 我不明白问题是什么。

When you search "degree" you can find two kinds of degree functions. 搜索“学位”时,您可以找到两种学位函数。 In my case, I can see like this, 就我而言,我可以这样看,

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

The degree function in sna package do not have "mode" argument but igraph has it. sna包中的degree函数没有“mode”参数,但是igraph有它。

So you can make your R script to recoginize where it is from using " :: ". 所以你可以让你的R脚本使用“::”来识别它的来源。

> deg <- degree(net, mode="all")
Error in degree(net, mode = "all") : unused argument (mode = "all")
> deg <- igraph::degree(net, mode="all")
> 

Enjoy R !! 享受R !!

The problem is a conflict between several libraries that you loaded above. 问题是您在上面加载的几个库之间存在冲突。 The solution is defined in the command of the degree function of being called well is of igraph . 解决方案是在被称为井的degree函数的命令中定义的是igraph

You specify it as follows: library_name :: function_name 您可以按如下方式指定它: library_name :: function_name

In your case, the library_name value is igraph and function_name is degree , so your code should look like this: 在您的情况下,library_name值为igraph ,function_name为degree ,因此您的代码应如下所示:

deg <- igraph::degree (net, mode = "all")

and it works. 它的工作原理。

This method is very useful, but it should not create the conflict (same function name in two different packages), so specify the package to use with the :: . 此方法非常有用,但它不应该创建冲突(两个不同的包中的函数名称相同),因此请指定要与::一起使用的包。

Example: 例:

The library ade4 contains a function named within and the base environment of R already contains a function within . 该库ade4包含一个名为函数withinbase的R环境中已经包含一个函数within Of course, the within of ade4 has a different action than within of base . 当然, withinade4具有比不同的动作withinbase

So if in my work environment, I have both libraries loaded ( base and ade4 ) and I want to use the function within , I will have a R execution conflict. 所以,如果在我的工作环境,我装这两个库( baseade4 ),我想使用的功能within ,我将有A R执行冲突。 This is due to 2 functions having the same name and R not knowing which library you are wanting to use. 这是由于2个函数具有相同的名称而R不知道您想要使用哪个库。 In this case you have to specify the library concerned. 在这种情况下,您必须指定相关的库。

Here, as we know the library, we do not want to try to detach the one that uses with detach("package:ade4") . 在这里,我们知道库,我们不想尝试分离使用detach的那个detach("package:ade4")

While writing the code, one knows the library which you want to use for the function, so without detaching the package, you would do one of these: 在编写代码时,可以知道要用于函数的库,因此无需分离包,您可以执行以下操作之一:

  • To execute the within function of base then: base::within() 要执行basewithin函数,那么: base::within()

  • To execute the within function of ade4 then: ade4::within() 要执行ade4within函数,那么: ade4::within()

I hope you have answered and explained well. 我希望你能回答并解释清楚。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM