#### limpio mi ambiente de trabajo rm(list = ls()) # carga este paquete library(sna) ####################################################################### # otra forma de representar una sociomatriz, además de una gráfica es # usando una gráfica de matriz ####################################################################### #Graficamos una sociomatrix aleatoria de 5x5 plot.sociomatrix(rgraph(5)) #Graficamos una matrix aleatoria un poco más grande plot.sociomatrix(rgraph(100),drawlab=FALSE,diaglab=FALSE) # practiquemos un poco # TUTORIAL de http://students.washington.edu/mclarkso/documents/plot%20sociomatrix%20Ver2.pdf # una sociomatriz con matices o variable continua random_matrix <- matrix(runif(25, min=0, max=1), nrow=5) plot.sociomatrix(random_matrix) plot.sociomatrix(random_matrix, drawlines=FALSE) # sin etiquetas plot.sociomatrix(random_matrix, drawlab=FALSE) # sin etiquetas en la diagonal plot.sociomatrix(random_matrix, diaglab=FALSE) #personalisamos las etiquetas plot.sociomatrix(random_matrix, labels=list(c("one", "two", "three", "four", "five"), c("1", "2", "3", "4", "5"))) # etiquetas de mayor tamaño (dale Zoom para que veas bien la grafica) plot.sociomatrix(random_matrix, cex.lab=2) # etiquetamos las columnas y las hileras plot.sociomatrix(random_matrix, xlab="column label", ylab="row label") # titulo y subtitulo plot.sociomatrix(random_matrix, main="Titulo Principal", sub="Subtitulo") # cambiamos el aspecto ratio ancho alto plot.sociomatrix(random_matrix, asp=0.5) ####################################################################### # simulamos una matriz nombres<- c( "Jose", "Romina","Alicia","Maco","Jesica", "Armando", "Fabiola","Tatiana", "Julio","Pedro", "Juan", "Kike", "Rolas", "Roberto") sexo= c("M", "F","F","F","F", "M", "F","F", "M","M","M","M","M","M" ) # largo del vector o sea el numero de elementos del vector length(nombres) length(sexo) # comparo el sexo el elemento 1 del vector, o sea de José con el del resto de los # actores, si es igual da TRUE sino FALSE xe1=sexo[1]==sexo; xe1 class(xe1); length(xe1) xe1 #### xe2=sexo[2]==sexo xe3=sexo[3]==sexo xe4=sexo[4]==sexo xe5=sexo[5]==sexo xe6=sexo[6]==sexo xe7=sexo[7]==sexo xe8=sexo[8]==sexo;xe8 xe9=sexo[9]==sexo xe10=sexo[10]==sexo xe11=sexo[11]==sexo xe12=sexo[12]==sexo xe13=sexo[13]==sexo xe14=sexo[14]==sexo xe14 xeAll=c(xe1,xe2,xe3,xe4,xe5,xe6, xe7,xe8,xe9,xe10,xe11,xe12,xe13,xe14);xeAll A = matrix( xeAll, # elementos nrow=14, # hileras ncol=14, # columnas byrow = TRUE) # llenar por hileras A ################################################################################# # dicotomizar matriz de distancias. Funcion for(i in 1:nrow(A)) { for(j in 1:ncol(A)) { ###########checa solo cambie las reglas if (A[i,j]) {A[i,j]=rbinom(1,1,0.85)} else # lazos mismo sexo 85% prob {A[i,j]=rbinom(1,1,0.05)} # lazos de sexo diferente 5% de prob }####cierro loop para row (hileras) }####cierro loop para col (columnas) ################################################################################# A #### nombres colnames(A)<-nombres rownames(A)<-nombres #diagonal la vuelvo ceros diag(A)<-0 A ##### paste(as.character(xe), collapse=", ") NO USE ESTA FUNCION ####### dput(as.character(xe1)) muy util pero no lo use # cambiamos el aspecto ratio ancho alto plot.sociomatrix(A, asp=0.5) #### esta no es una matriz aleatoria le dimos más probabilidad a los lazos del mismo sexo ##### reordenamos la matriz conservando la naturaleza de las relaciones, ordenamos # por sexo nombres1<- c( "Fabiola","Tatiana", "Romina","Alicia","Maco","Jesica", "Armando", "Jose", "Julio","Pedro", "Juan", "Kike", "Rolas", "Roberto") A1<-A[nombres1,nombres1] A1 plot.sociomatrix(A1, asp=0.5) #### otra más fancy #####cargamos este paquete library(lattice) new.palette=colorRampPalette(c("white","black"),space="rgb") levelplot(A1, border="black", colorkey = FALSE, col.regions=new.palette(2), xlab=NULL, ylab=NULL) #### #### No olvides guardar tus gráficas