cryptocalypse's picture
graph
bc59169
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)