Show code cell source
import networkx as nx
import matplotlib.pyplot as plt
# Set seed for layout
seed = 33
# Directory structure
structure = {
    "Skills": ["Literacy", "Project", "Numeracy", "Workflow", "Challenges"],
    "Estimate": ["Interval", "R01", "K24", "U01"],
    "Literacy": ["Open-Science", "Self-Publish", "Peer-Reviewed", "Grants", "Proposals"],
    "Numeracy": ["Python", "AI", "R", "Stata", "Estimate"],
    "AI": ["ChatGPT", "Co-Pilot"],
    "Project": ["Manuscript", "Code", "Git"],
    "Point": ["Nonparametric", "Semiparametric", "Parametric", "Simulation", "Uses/Abuses"],
    "Estimate": ["Point", "Interval"],
    "Interval": ["Oneway", "Twoway", "Multivariable", "Hierarchical", "Clinical", "Public"],
    "Workflow": ["High School Students", "Undergraduates", "Graduate Students", "Medical Students", "Residents", "Fellows", "Faculty", "Analysts", "Staff", "Collaborators", "Graduates"],
    "Challenges": ["Truth", "Rigor", "Error", "Sloppiness", "Fraud", "Learning"],
}
# Gentle colors for children
child_colors = ["lightgreen", "lightpink", "lightyellow",
    'lavender', 'lightcoral', 'honeydew', 'azure','lightblue', 
]
# 'lightsteelblue', 'lightgray', 'mintcream','mintcream', 'azure', 'linen', 'aliceblue', 'lemonchiffon', 'mistyrose'
# List of nodes to color light blue
light_blue_nodes = ["Literacy", "Numeracy", "You", "Project", "Challenges"]
G = nx.Graph()
node_colors = {}
# Function to capitalize the first letter of each word
def capitalize_name(name):
    return ' '.join(word.capitalize() for word in name.split(" "))
# Assign colors to nodes
for i, (parent, children) in enumerate(structure.items()):
    parent_name = capitalize_name(parent.replace("_", " "))
    G.add_node(parent_name)
    
    # Set the color for Skills
    if parent_name == "Skills":
        node_colors[parent_name] = 'lightgray'
    else:
        node_colors[parent_name] = child_colors[i % len(child_colors)]
        
    for child in children:
        child_name = capitalize_name(child.replace("_", " "))
        G.add_edge(parent_name, child_name)
        if child_name in light_blue_nodes:
            node_colors[child_name] = 'lightblue'
        else:
            node_colors[child_name] = child_colors[(i + 6) % len(child_colors)]  # You can customize the logic here to assign colors
colors = [node_colors[node] for node in G.nodes()]
# Set figure size
plt.figure(figsize=(30, 30))
# Draw the graph
pos = nx.spring_layout(G, scale=30, seed=seed)
nx.draw_networkx_nodes(G, pos, node_size=10000, node_color=colors, edgecolors='black')  # Boundary color set here
nx.draw_networkx_edges(G, pos)
nx.draw_networkx_labels(G, pos, font_size=20)
plt.show()
 
Medical Students
- Muhammad Rahman 
- Maya Patel 
- Carlos Ramirez 
- Aisha Khan 
- Benjamin Nguyễn 
- Olivia Lopez 
- James Martinez 
- Fatima Ali 
- Alexander Gómez 
- Priya Desai 
- David Okafor 
- Sofia Almeida 
- Daniel Kimani 
- Isabella Navarro 
- Ethan Chen 
- Chloe Ahmed 
- Joseph Amara 
- Amelia Nwosu 
- Samuel Nascimento 
- Evelyn Gupta 
- David Nguyen 
- Harper Lee 
- Christopher Choudhury 
- Abigail Kaur 
- Matthew Hernandez 
- Harper Kumar 
- Jayden García 
- Sofia Silva 
- Daniel Wong 
