Untitled
unknown
plain_text
2 years ago
1.6 kB
9
Indexable
import networkx as nx
import matplotlib.pyplot as plt
# Example JSON-like data structure, assuming each node has an 'id' and 'attributes'
data = {
"nodes": [
{"id": "CardAvailable", "attributes": {"Available": True, "CardActive": True}},
{"id": "CardRegistered", "attributes": {"Registered": True, "CardInternational": False}},
{"id": "CardInternational", "attributes": {"CardInternational": False, "DoesCardHasValid": False}},
{"id": "RegisteredStateEscheat", "attributes": {"RegisteredState": True}}
],
"edges": [
{"from": "CardAvailable", "to": "CardRegistered"},
{"from": "CardRegistered", "to": "CardInternational"},
{"from": "CardInternational", "to": "RegisteredStateEscheat"}
]
}
# Create a NetworkX directed graph
G = nx.DiGraph()
# Add nodes with attributes
for node in data["nodes"]:
G.add_node(node["id"], **node["attributes"])
# Add edges between nodes
for edge in data["edges"]:
G.add_edge(edge["from"], edge["to"])
# Draw the graph
pos = nx.spring_layout(G) # positions for all nodes
# nodes
nx.draw_networkx_nodes(G, pos, node_size=700)
# edges
nx.draw_networkx_edges(G, pos, arrows=True)
# node labels
labels = {node['id']: node['id'] for node in data["nodes"]}
nx.draw_networkx_labels(G, pos, labels, font_size=12)
# edge labels
edge_labels = {(edge['from'], edge['to']): ' ' for edge in data["edges"]} # Dummy space for edge labels
nx.draw_networkx_edge_labels(G, pos, edge_labels=edge_labels)
plt.axis('off') # Turn off the axis
plt.show() # Display the graph
Editor is loading...
Leave a Comment