---
title: "Análisis de Sociogramas con igraph"
author: "Vicente Nevarez & Miguel Helguera"
date: "2024-05-09"
output: html_document
---

# Introducción
En este informe se utiliza el paquete `igraph` para analizar datos de un sociograma. Se crean grafos dirigidos para visualizar las conexiones entre individuos que formarían equipo y aquellos que no lo harían. Los datos se obtuvieron de la realización de una encuesta al grupo de sexto semestre de la carrera de administración con un total de 18 participantes.

# Carga de datos

```r
# Librería para análisis de grafos
library("igraph")
## Warning: package 'igraph' was built under R version 4.1.3
## 
## Attaching package: 'igraph'
## The following objects are masked from 'package:stats':
## 
##     decompose, spectrum
## The following object is masked from 'package:base':
## 
##     union
# Leer datos desde un archivo CSV
datos <- read.csv("C:/R/sociograma.csv", header = TRUE, sep = ",")

# Vista previa de los datos
View(datos)

En este bloque, cargamos el paquete igraph y leemos los datos desde un archivo CSV. Se usa View() para inspeccionar el contenido y asegurarse de que la estructura es la esperada.

Creación de un grafo para personas que formarían equipo

# Datos para personas que formarían equipo
nombre <- datos$nombre
formarEquipo <- datos$formarEquipo

# Crear un data frame para conexiones de equipo
dataf <- data.frame(nombre, formarEquipo)

# Ordenar por el campo de conexiones
dator <- dataf[order(dataf$formarEquipo),]

# Crear un grafo dirigido
g <- graph.data.frame(dator, directed = TRUE)

# Ajustar el tamaño de los nodos y el diseño del gráfico
plot.igraph(g,
            edge.curved = FALSE,  # Bordes rectos
            edge.color = "red",  # Color de los bordes
            edge.width = 0.2,  # Grosor de los bordes
            edge.arrow.size = 0.05,  # Tamaño de las flechas
            vertex.color = "#6ec3db",  # Color de los vértices
            vertex.label.cex = 0.7,  # Tamaño del texto de los vértices
            vertex.label.dist = 0.5,  # Distancia del texto desde el vértice
            vertex.label.color = "black",  # Color del texto
            vertex.label.bg = "white",  # Fondo blanco para el texto
            layout = layout.fruchterman.reingold(g, niter = 10000, area = 10000, repulserad = 3)  # Disposición del grafo
)
## Warning in layout_with_fr(structure(list(23, TRUE, c(0, 1, 2, 3, 4, 5, 6, :
## Argument `area' is deprecated and has no effect
## Warning in layout_with_fr(structure(list(23, TRUE, c(0, 1, 2, 3, 4, 5, 6, :
## Argument `repulserad' is deprecated and has no effect

En este bloque, usamos los datos para crear un grafo dirigido que representa a las personas que formarían equipo. Se configura el aspecto del grafo, incluyendo el tamaño de las flechas, colores, y el diseño utilizando el algoritmo Fruchterman-Reingold, que ayuda a mantener una disposición clara y atractiva.

Creación de un grafo para personas que no formarían equipo

# Datos para personas que no formarían equipo
no_formarian_equipo <- datos$NoFormarEquipo

# Crear un nuevo data frame para conexiones de "no equipo"
dataf <- data.frame(nombre, no_formarian_equipo)

# Ordenar por el campo de conexiones
dator <- dataf[order(dataf$no_formarian_equipo),]

# Crear un nuevo grafo dirigido
g <- graph.data.frame(dator, directed = TRUE)

# Ajustar el diseño y el aspecto del gráfico
plot.igraph(g,
            edge.curved = FALSE,
            edge.color = "red",
            edge.width = 0.2,
            edge.arrow.size = 0.05,
            vertex.color = "#6ec3db",
            vertex.label.cex = 0.7,
            vertex.label.dist = 0.5,
            vertex.label.color = "black",
            vertex.label.bg = "white",
            layout = layout.fruchterman.reingold(g, niter = 10000, area = 10000, repulserad = 3)
)
## Warning in layout_with_fr(structure(list(21, TRUE, c(0, 1, 2, 3, 4, 5, 6, :
## Argument `area' is deprecated and has no effect
## Warning in layout_with_fr(structure(list(21, TRUE, c(0, 1, 2, 3, 4, 5, 6, :
## Argument `repulserad' is deprecated and has no effect

En este bloque, seguimos un proceso similar para crear un grafo que representa a las personas que no formarían equipo. El diseño y el formato del grafo son coherentes con el primer grafo para facilitar la comparación visual.

Conclusión

En este informe, se presentaron dos grafos dirigidos que visualizan las relaciones entre individuos en un sociograma. El primer grafo muestra las conexiones entre personas que formarían equipo, mientras que el segundo representa a aquellas que no formarían equipo. La disposición visual y el estilo del gráfico facilitan la interpretación de las conexiones y permiten identificar patrones de interacción social. ```