import csv import networkx as nx import matplotlib.pyplot as plt def crear_grafo_desde_csv(archivo_csv): # Crear un grafo vacío G = nx.Graph() with open(archivo_csv, mode='r', encoding='utf-8') as file: reader = csv.reader(file) for fila in reader: # Añadir nodos para cada elemento de la fila for item in fila: G.add_node(item.strip()) # Añadir aristas entre los elementos de la fila for i in range(len(fila)): for j in range(i + 1, len(fila)): G.add_edge(fila[i].strip(), fila[j].strip()) return G def dibujar_y_guardar_grafo(G, output_file): # Definir layout para el grafo pos = nx.spring_layout(G, seed=42) # Dibujar el grafo plt.figure(figsize=(12, 8)) nx.draw(G, pos, with_labels=True, node_color='skyblue', edge_color='gray', node_size=3000, font_size=10, font_weight='bold') # Guardar el grafo en un archivo plt.savefig(output_file, format='png', dpi=300) plt.close() print(f"Grafo guardado en: {output_file}") # Ejemplo de uso archivo_csv = 'proyectos_empresas.csv' # Reemplaza con tu archivo CSV output_file = 'grafo_relaciones.png' # Crear el grafo a partir del CSV G = crear_grafo_desde_csv(archivo_csv) # Dibujar y guardar el grafo dibujar_y_guardar_grafo(G, output_file)