Commit efc23b8a authored by Ednomesor's avatar Ednomesor

MAJ QUANTI

parent 63be80ad
......@@ -13,6 +13,168 @@ setwd("~/Documents/framagit/cours_SNA/script_R/")
library(igraph)
library(colorRamps)
####POUR DEBUTER : ANALYSES DE BASES SUR PETITS GRAPHES####
net <- make_graph("Krackhardt_Kite")
net
V(net)$name<-c("A","B","C","D","E","F","G","H","I","J")
#Fixer les coordonnées du graphe pour la visualisation
l <- layout_with_fr(net)
l <- norm_coords(l, ymin=-1, ymax=1, xmin=-1, xmax=1)
#Visualisation
plot(net,
vertex.label = V(net)$name,
rescale=F,
layout=l)
####MESURES GLOBALES SUR LE GRAPHE####
#Densité du graphe
graph.density(net)
#Diamètre du graphe
diameter(net)
#Transitivité - clustering coefficient
#transitivity(net, type=c("globalundirected"))
#V(net)$TRANS<-transitivity(net, type=c("localundirected"))
#### MESURES SUR LES SOMMETS ####
###Centralité de degré###
V(net)$DC<-degree(net)
#Ce qui donne les mesures suivantes
V(net)$DC
#Visualisation selon cette mesure
#taille des noeuds + ajout du degré à côté du nom du noeud
par(mar = c(2,0,2,0))
plot(net,
vertex.size=V(net)$DC*4,
vertex.color="grey",
vertex.label=paste0(V(net)$name, ":", V(net)$DC),
vertex.label.color="black",
rescale=F,
layout = l,
main="Degré de centralité"
)
#On peut récupérer ces valeurs dans un dataframe
df.mesures<- data.frame(deg.centralite = V(net)$DC,
row.names = V(net)$name)
#On peut enlever les noeuds les moins importants
net2<-delete_vertices(net, V(net)$DC<=1)
net2
plot(net2,
vertex.size=V(net2)$DC*4,
vertex.color="grey",
vertex.label =paste0(V(net2)$name, ":", V(net2)$DC),
vertex.label.color="black",
main="Degré de centralité sup à 1"
)
#### CENTRALITE D'INTERMEDIARITE ####
V(net)$BET<-betweenness(net)
#On peut récupérer ces valeurs dans un dataframe
df.mesures<- data.frame(
deg.centralite = V(net)$DC,
deg.intermed = V(net)$BET,
row.names = V(net)$name
)
#Visualisation des résultats
plot(net,
vertex.size=V(net)$BET,
vertex.color="green",
vertex.label=paste0(V(net)$name, ":", (V(net)$BET)),
vertex.label.color="grey10",
rescale=F,
layout = l,
main="Degré d'intermédiarité"
)
####CENTRALITE DE PROXIMITE####
#Closeness Centrality#
V(net)$CLO<-closeness(net)
#On peut récupérer ces valeurs dans un dataframe
df.mesures<- data.frame(
deg.centralite = V(net)$DC,
deg.intermed = V(net)$BET,
deg.close = V(net)$CLO,
row.names = V(net)$name
)
#Visualisation des résultats
plot(net,
vertex.size=V(net)$CLO*200,
vertex.color="purple",
vertex.label=paste0(V(net)$name, ":", (V(net)$CLO)),
vertex.label.color="grey10",
rescale=F,
layout = l,
main="Centralité de proximité"
)
####CENTRALITE EN VECTEUR PROPRE
#Eigenvector Centrality#
V(net)$EIGEN<-evcent(net)$vector
#Visualisation des résultats
plot(net,
vertex.size=V(net)$EIGEN*20,
vertex.color="pink",
vertex.label=paste0(V(net)$name, ":", (V(net)$EIGEN)),
vertex.label.color="grey10",
rescale=F,
layout = l,
main="Centralité en vecteur propre"
)
#On peut récupérer ces valeurs dans un dataframe
df.mesures<- data.frame(
deg.centralite = V(net)$DC,
deg.intermed = V(net)$BET,
deg.close = V(net)$CLO,
eigen.centralite = V(net)$EIGEN,
row.names = V(net)$name
)
####POINT D'ARTICULATION DU RESEAU ####
articulation_points(net)
####MESURES LIENS####
#Edge betweenness
E(net)$EDG.BET<-edge.betweenness(net)
#Longueur du chemin moyen
average.path.length(net)
#Chemin plus court
df.shortest<-as.data.frame(shortest.paths(net))
#### CLIQUES ####
#Taille de la plus grande clique
clique_num(net)
# Noeud impliqué dans la plus grande clique
largest_cliques(net)
#Récupérer toutes les mesures du graphe dans un dataframe
#On peut vouloir ces résultats dans un dataframe
df.allmesures<-as_long_data_frame(net)
#####Préparation à l'exercice####
#Chargement des données
liens<-read.csv("data/stormofswords/stormofswords_liens.csv",sep=",", header=TRUE)
noeuds<-read.csv("data/stormofswords/stormofswords_noeuds.csv",sep=",", header=TRUE)
......@@ -20,7 +182,7 @@ noeuds<-read.csv("data/stormofswords/stormofswords_noeuds.csv",sep=",", header=T
#transformation en objet igraph
net<- graph_from_data_frame(d=liens, vertices=noeuds, directed = F)
#Aïe ! Le pb est que l'id ne correspond pas au valeur des listes de liens
#Aïe ! Le pb est que l'id ne correspond pas au nom des listes de liens
#J'ai besoin de remodeler mes dataframes
#J'utilise la fonction subset pour n'utiliser que les colonnes utiles
liens<-subset(liens, select = c("source", "target", "weight"))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment