fork download
  1. # Charger les librairies nécessaires
  2. library(igraph)
  3. library(igraphdata)
  4.  
  5. # Charger le jeu de données UKfaculty
  6. data(UKfaculty)
  7.  
  8. # Afficher la structure des données
  9. str(UKfaculty)
  10.  
  11. # Créer le graphe à partir des données
  12. g <- graph_from_data_frame(UKfaculty, directed = TRUE)
  13.  
  14. # Visualiser le graphe
  15. plot(g,
  16. vertex.size = 5,
  17. vertex.label.cex = 0.7,
  18. vertex.color = "lightblue",
  19. edge.arrow.size = 0.5,
  20. main = "Graphe des Facultés UK")
  21.  
  22. # Nombre de nœuds
  23. num_nodes <- gorder(g)
  24. cat("Nombre de nœuds dans le graphe :", num_nodes, "\n")
  25.  
  26. # Vérifier si le graphe est dirigé
  27. is_directed <- is.directed(g)
  28. cat("Le graphe est dirigé :", is_directed, "\n")
  29.  
  30. # Calcul du nombre d'arrêtes
  31. num_edges <- gsize(g)
  32. cat("Nombre d'arrêtes dans le graphe :", num_edges, "\n")
  33.  
  34. # Calcul de la centralité de degré
  35. centrality_degree <- degree(g)
  36. cat("Centralité de degré des nœuds :\n")
  37. print(centrality_degree)
  38.  
  39. # Transformer le graphe en non dirigé
  40. g_undirected <- as.undirected(g)
  41.  
  42. # Appliquer l'algorithme de Louvain
  43. communities <- cluster_louvain(g_undirected)
  44.  
  45. # Visualiser le graphe avec les communautés
  46. plot(g_undirected,
  47. vertex.size = 5,
  48. vertex.label.cex = 0.7,
  49. vertex.color = membership(communities),
  50. main = "Communautés dans le Graphe")
  51.  
  52. # Nombre de nœuds dans chaque groupe
  53. group_sizes <- table(membership(communities))
  54. cat("Nombre de nœuds dans chaque groupe :\n")
  55. print(group_sizes)
  56.  
  57. # Trouver le groupe avec le plus de nœuds
  58. largest_group <- as.numeric(names(which.max(group_sizes)))
  59.  
  60. # Identifier les nœuds dans le groupe le plus grand
  61. nodes_to_remove <- V(g_undirected)[membership(communities) == largest_group]
  62.  
  63. # Retirer le groupe du graphe
  64. g_reduced <- delete_vertices(g_undirected, nodes_to_remove)
  65.  
  66. # Nombre de nœuds dans le nouveau graphe
  67. num_nodes_reduced <- gorder(g_reduced)
  68. cat("Nombre de nœuds dans le nouveau graphe :", num_nodes_reduced, "\n")
  69.  
  70. # Visualiser le nouveau graphe
  71. plot(g_reduced,
  72. vertex.size = 5,
  73. vertex.label.cex = 0.7,
  74. main = "Nouveau Graphe après retrait du groupe le plus grand")
  75.  
  76. # Calcul de la centralité de degré pour le nouveau graphe
  77. centrality_degree_reduced <- degree(g_reduced)
  78. cat("Centralité de degré dans le nouveau graphe :\n")
  79. print(centrality_degree_reduced)
  80.  
  81. # Comparer les centralités
  82. cat("Centralité de degré dans le graphe initial :\n")
  83. print(centrality_degree)
  84.  
  85. cat("Centralité de degré dans le nouveau graphe :\n")
  86. print(centrality_degree_reduced)
  87.  
  88. # Explication des Changements de Centralité
  89. cat("Explication des Changements de Centralité :\n")
  90. cat("Les valeurs de centralité peuvent changer en raison du retrait de nœuds, de la modification des chemins entre les nœuds restants, et de la perte de connexions importantes.\n")
  91.  
Success #stdin #stdout #stderr 0.46s 46904KB
stdin
Standard input is empty
stdout
IGRAPH D-W- 81 817 -- 
+ attr: Type (g/c), Date (g/c), Citation (g/c), Author (g/c), Group
| (v/n), weight (e/n)
+ edges:
 1 ->  4 36 44 45 61 62
 2 -> 15 18 21 25 29 31 32 35 37 39 41 43 46 51 52 79 80
 3 -> 17 53 59 61
 4 ->  1  3 36 45 53 60 61 74 75 78
 5 ->  6  7  9 10 12 13 16 22 23 27 28 37 38 40 42 48 49 50 52 61 64 65 67 68
      69 72 76 77
 6 ->  7 29 30 47 50 58 66 68 69
 7 ->  6 10 12 13 16 18 23 27 29 30 42 47 63 68 69 72 77
 8 -> 31 41
 9 ->  3  4 17 45 53 59 60 61
10 ->  5  7 13 22 23 27 28 42 49 65 68 69 71 72 76 77
11 -> 
12 -> 16 22 23 49 69 77
13 ->  5  7 12 16 21 23 27 28 33 49 68 69 77
14 -> 20 26 51 56 80
15 ->  2 14 18 19 20 21 25 29 31 34 35 37 39 41 43 46 51 54 57 58 79 80
16 -> 12 13 33 40 65 72
17 ->  3  4 45 53 54 59 61 62
18 ->  2 46 58
19 -> 18 21 29 31 39 43 46 54 57 58 79
20 ->  2  6  8 14 18 19 25 26 31 41 51 54 56 80
21 ->  2  8 10 19 25 29 31 34 35 39 41 46 50 51 70 79
22 ->  7 10 12 21 29 30 47 58 66 69 76 77
23 ->  7 12 22 27 49 69 77
24 -> 32 48 62
25 ->  2 39 47 54
26 ->  2 14 20 21 29 31 35 37 51 52 54 56 80
27 ->  5  7 10 13 16 19 22 23 33 35 37 42 49 52 58 63 65 67 68 69 77
28 -> 10 13 42 47 69 77
29 ->  2  4  6  7  8 14 15 18 19 20 21 22 23 24 26 27 31 32 34 35 37 39 41 43
      46 50 51 52 54 55 57 58 62 64 66 69 70 71 77 79 80
30 ->  6  7 10 22 63 66
31 ->  2  8 19 21 25 29 32 35 37 39 41 43 46 51 57 79
32 -> 24
33 -> 10 12 13 16 23 27 37 38 40 42 68 69 71 72 77
34 -> 15 19 21 25 29 31 35 37 43 46 54 58
35 ->  2 15 18 21 29 31 41 46 50 54 57 69 79
36 ->  1  3 45 53 74
37 ->  2  5  7  9 10 13 16 18 19 21 27 29 31 32 33 35 38 40 42 43 48 49 50 52
      54 55 57 58 60 64 67 69 70 77 79 81
38 ->  1  2 10 17 33 37 45 50 54 59 73 74 78
39 -> 18 19 21 25 29 31 42 46 54 58
40 ->  7 10 12 16 23 27 33 65 69 71 72 77
41 ->  8 21 31
42 ->  7 10 16 23 28 49 65 69 71 72 76 77
43 ->  2  8 12 13 15 18 19 21 25 29 31 34 35 37 41 46 50 51 52 54 57 60 79
44 ->  1 36 45 53 62
45 ->  1 36 61
46 ->  2 11 15 18 19 21 29 31 34 39 54 57 58 62 79
47 ->  7 28 63 77
48 ->  5 27 52 54 55 64 67 70
49 -> 12 13 23 33 42 52 53 68 69 76 77
50 -> 18 21 35 37 38 43 54 70
51 -> 14 18 20 21 26 29 31 37 54 56 58 80
52 ->  1  2  5  9 18 21 24 26 27 29 32 33 35 37 43 48 49 50 54 55 57 62 64 69
      70 75 77
53 -> 75
54 ->  2 37 50
55 -> 24 32 48 56 64
56 -> 14 20 26 80
57 ->  2 15 18 29 31 37 39 43 46 51 52 70 79
58 -> 11 18 19 21 27 35 46 50 51 54 76
59 -> 17 81
60 ->  9
61 ->  1  4 45 53 59 75
62 ->  1  2  7  9 10 18 21 23 24 25 27 29 31 32 37 42 46 49 52 54 55 57 61 63
      64 65 69 70 74 75 76 77 79 80
63 ->  7 47 77
64 ->  5 24 32 48 52 55
65 -> 10 42
66 ->  6 22 30
67 ->  5 58
68 ->  5  6  7 10 12 13 16 23 27 28 33 40 42 49 66 69 77
69 -> 10 12 18 23 27 29 35 42 47 49 59 68 77
70 ->  2 21 37 49 50 54 57 62 69 77
71 -> 10 16 33 40 42 69 77
72 ->  6  7 13 16 33 42 49 69 76 77
73 -> 38 81
74 ->  4 36 38 59 61 75 81
75 ->  4 17 38 53 61 62 74
76 -> 10 42 58 72
77 ->  5  7 10 12 13 16 23 27 33 40 42 47 49 63 65 68 69 71 72 76
78 ->  4 17 45 59
79 ->  2 18 19 21 29 31 35 39 46 54
80 -> 14 20 26 51 54 56
81 ->  1 38 59 73 74 75
stderr
Attaching package: ‘igraph’

The following objects are masked from ‘package:stats’:

    decompose, spectrum

The following object is masked from ‘package:base’:

    union

Error in as.data.frame.default(d) : 
  cannot coerce class ""igraph"" to a data.frame
Calls: graph_from_data_frame -> as.data.frame -> as.data.frame.default
Execution halted