forked from MrKalzu/traceroute_map
Intial commit. Some stuff I made last night.
This commit is contained in:
50
netx_path_test.py
Normal file
50
netx_path_test.py
Normal file
@ -0,0 +1,50 @@
|
||||
import sqlite3
|
||||
import networkx as nx
|
||||
import matplotlib.pyplot as plt
|
||||
import random
|
||||
import numpy
|
||||
|
||||
seed=1
|
||||
random.seed(seed)
|
||||
numpy.random.seed(seed)
|
||||
|
||||
|
||||
conn = sqlite3.connect('traceroute.db')
|
||||
cursor = conn.cursor()
|
||||
|
||||
cursor.execute("SELECT source_ip, destination_ip FROM links")
|
||||
edges = cursor.fetchall()
|
||||
|
||||
conn.close()
|
||||
|
||||
G = nx.Graph()
|
||||
|
||||
for edge in edges:
|
||||
source_ip, destination_ip = edge
|
||||
G.add_edge(source_ip, destination_ip)
|
||||
|
||||
# Find all connected components (subgraphs) in the graph
|
||||
subgraphs = [G.subgraph(c).copy() for c in nx.connected_components(G)]
|
||||
|
||||
hscale=5
|
||||
vscale=100
|
||||
|
||||
# Create the figure with a larger size
|
||||
total_nodes = sum(len(subgraph.nodes) for subgraph in subgraphs)
|
||||
width = total_nodes * hscale / 10 # Adjust the width as needed
|
||||
height = total_nodes * vscale / 50 # Adjust the height as needed
|
||||
plt.figure(figsize=(width, height))
|
||||
|
||||
# Set aspect ratio to 'equal'
|
||||
plt.gca().set_aspect('equal', adjustable='datalim')
|
||||
|
||||
|
||||
# Draw each subgraph separately
|
||||
for subgraph in subgraphs:
|
||||
nodes = list(subgraph.nodes)
|
||||
pos = {node: (i * hscale, -i * vscale) for i, node in enumerate(nodes)}
|
||||
nx.draw(subgraph, pos, with_labels=True, node_color='lightblue', edge_color='gray', node_size=500, font_size=10)
|
||||
|
||||
# Save the figure
|
||||
plt.savefig("graph003.svg", format="svg")
|
||||
plt.show()
|
Reference in New Issue
Block a user