"email": "info@commandline.dev"
"homepage": "https://waveterm.dev",
import networkx as nx import matplotlib.pyplot as plt from matplotlib_venn import venn2
data = { "words": { "apple": {"category": "Fruit", "color": "Red"}, "banana": {"category": "Fruit", "color": "Yellow"}, "orange": {"category": "Fruit", "color": "Orange"}, "grape": {"category": "Fruit", "color": "Purple"} }, "transformations": [ {"from": "apple", "to": "ApplePie", "type": "Baking"}, {"from": "banana", "to": "BananaBread", "type": "Baking"}, {"from": "orange", "to": "OrangeJuice", "type": "Juicing"}, {"from": "grape", "to": "grapefruit", "type": "Mutation"} ] }
graph = nx.DiGraph()
for word, metadata in data["words"].items(): graph.add_node(word, **metadata)
for transformation in data["transformations"]: to_word = transformation["to"] if to_word not in graph: graph.add_node( to_word, category="Generated", numeric=[ord(c) for c in to_word] )
for transformation in data["transformations"]: graph.add_edge( transformation["from"], transformation["to"], transformation=transformation["type"] )
known_words = set(data["words"].keys()) generated_words = set(node for node, attr in graph.nodes(data=True) if attr.get("category") == "Generated")
venn2([known_words, generated_words], ('Known Words', 'Generated Words')) plt.title("Known vs. Generated Words") plt.show()