[text] CODEVUA

Viewer

  1. import matplotlib.pyplot as plt
  2.  
  3. # Define positions for each language family and group
  4. positions = {
  5.     "Indo-European": (0, 10),
  6.     "Germanic": (-10, 8), "Romance": (0, 8), "Slavonic": (10, 8), "Celtic": (-10, 6), "Indo-Iranian": (0, 6), "Hellenic": (10, 6),
  7.     "West Germanic": (-12, 6), "North Germanic": (-8, 6), "East Slavonic": (8, 6), "West Slavonic": (10, 6), "South Slavonic": (12, 6),
  8.     "English": (-14, 4), "Dutch": (-12, 4), "German": (-10, 4), "Afrikaans": (-13, 2), "Yiddish": (-11, 2), "Frisian": (-9, 2),
  9.     "Swedish": (-8, 4), "Danish": (-6, 4), "Norwegian": (-8, 2), "Icelandic": (-6, 2), "Faroese": (-4, 2),
  10.     "Portuguese": (-2, 6), "Spanish": (0, 6), "Italian": (2, 6), "French": (0, 4), "Romanian": (2, 4),
  11.     "Russian": (6, 4), "Ukrainian": (8, 4), "Belarusian": (10, 4),
  12.     "Polish": (12, 4), "Czech": (14, 4), "Slovak": (16, 4),
  13.     "Bulgarian": (18, 4), "Serbo-Croatian": (20, 4), "Slovenian": (22, 4),
  14.     "Irish": (-10, 4), "Welsh": (-12, 4), "Scottish Gaelic": (-8, 4),
  15.     "Hindi": (0, 4), "Bengali": (2, 4), "Persian": (4, 4),
  16.     "Greek": (10, 4),
  17.     "Sino-Tibetan": (-15, 10), "Chinese": (-18, 8), "Tibetan": (-15, 8), "Burmese": (-12, 8),
  18.     "Mandarin": (-20, 6), "Cantonese": (-16, 6),
  19.     "Austronesian": (15, 10), "Malagasy": (12, 8), "Tagalog": (15, 8), "Malay/Indonesian": (18, 8), "Javanese": (15, 6), "Samoan": (18, 6), "Fijian": (12, 6),
  20.     "Afro-Asiatic": (-10, 2), "Semitic": (-12, 0), "Berber": (-10, 0), "Chadic": (-8, 0),
  21.     "Arabic": (-14, -2), "Hebrew": (-12, -2), "Amharic": (-10, -2),
  22.     "Hausa": (-8, -2),
  23.     "Dravidian": (10, 2), "Tamil": (8, 0), "Telugu": (10, 0), "Kannada": (12, 0), "Malayalam": (14, 0),
  24. }
  25.  
  26. edges = [
  27.     ("Indo-European", "Germanic"), ("Indo-European", "Romance"), ("Indo-European", "Slavonic"), ("Indo-European", "Celtic"), ("Indo-European", "Indo-Iranian"), ("Indo-European", "Hellenic"),
  28.     ("Germanic", "West Germanic"), ("Germanic", "North Germanic"),
  29.     ("West Germanic", "English"), ("West Germanic", "Dutch"), ("West Germanic", "German"), ("West Germanic", "Afrikaans"), ("West Germanic", "Yiddish"), ("West Germanic", "Frisian"),
  30.     ("North Germanic", "Swedish"), ("North Germanic", "Danish"), ("North Germanic", "Norwegian"), ("North Germanic", "Icelandic"), ("North Germanic", "Faroese"),
  31.     ("Romance", "Portuguese"), ("Romance", "Spanish"), ("Romance", "Italian"), ("Romance", "French"), ("Romance", "Romanian"),
  32.     ("Slavonic", "East Slavonic"), ("Slavonic", "West Slavonic"), ("Slavonic", "South Slavonic"),
  33.     ("East Slavonic", "Russian"), ("East Slavonic", "Ukrainian"), ("East Slavonic", "Belarusian"),
  34.     ("West Slavonic", "Polish"), ("West Slavonic", "Czech"), ("West Slavonic", "Slovak"),
  35.     ("South Slavonic", "Bulgarian"), ("South Slavonic", "Serbo-Croatian"), ("South Slavonic", "Slovenian"),
  36.     ("Celtic", "Irish"), ("Celtic", "Welsh"), ("Celtic", "Scottish Gaelic"),
  37.     ("Indo-Iranian", "Hindi"), ("Indo-Iranian", "Bengali"), ("Indo-Iranian", "Persian"),
  38.     ("Hellenic", "Greek"),
  39.     ("Sino-Tibetan", "Chinese"), ("Sino-Tibetan", "Tibetan"), ("Sino-Tibetan", "Burmese"),
  40.     ("Chinese", "Mandarin"), ("Chinese", "Cantonese"),
  41.     ("Austronesian", "Malagasy"), ("Austronesian", "Tagalog"), ("Austronesian", "Malay/Indonesian"), ("Austronesian", "Javanese"), ("Austronesian", "Samoan"), ("Austronesian", "Fijian"),
  42.     ("Afro-Asiatic", "Semitic"), ("Afro-Asiatic", "Berber"), ("Afro-Asiatic", "Chadic"),
  43.     ("Semitic", "Arabic"), ("Semitic", "Hebrew"), ("Semitic", "Amharic"),
  44.     ("Chadic", "Hausa"),
  45.     ("Dravidian", "Tamil"), ("Dravidian", "Telugu"), ("Dravidian", "Kannada"), ("Dravidian", "Malayalam"),
  46. ]
  47.  
  48. examples = {
  49.     "milk": {"Germanic": "milk, melk, mjölk, Milch", "Romance": "leite, leche, latte, lait"},
  50.     "days": {"Germanic": "måndag, tisdag...fredag", "Romance": "lundi, mardi...vendredi"}
  51. }
  52.  
  53. example_positions = {
  54.     "milk": (-15, 12),
  55.     "days": (20, 12)
  56. }
  57.  
  58. # Create a figure with adjusted positions
  59. plt.figure(figsize=(25, 20))
  60.  
  61. # Draw nodes with adjusted positions
  62. for node, (x, y) in positions.items():
  63.     plt.text(x, y, node, fontsize=12, ha='center', bbox=dict(facecolor='lightblue', edgecolor='black', boxstyle='round,pad=0.3'))
  64.  
  65. # Draw edges
  66. for edge in edges:
  67.     start, end = edge
  68.     sx, sy = positions[start]
  69.     ex, ey = positions[end]
  70.     plt.plot([sx, ex], [sy, ey], 'k-', lw=2)
  71.  
  72. # Add examples and symbols
  73. for example, texts in examples.items():
  74.     x, y = example_positions[example]
  75.     for family, text in texts.items():
  76.         plt.text(x, y, f"{family}: {text}", fontsize=10, ha='left', bbox=dict(facecolor='lightgreen', edgecolor='black', boxstyle='round,pad=0.3'))
  77.         y -= 1.5
  78.  
  79. # Add title
  80. plt.title("Language Families Mental Map", fontsize=20)
  81.  
  82. # Hide axes
  83. plt.axis('off')
  84.  
  85. # Save the plot as a JPG file with adjusted positions
  86. output_path = "Language_Families_Mental_Map_Adjusted.jpg"
  87. plt.savefig(output_path, format='jpg')
  88.  
  89. # Show the path of the saved file
  90. output_path
  91.  

Editor

You can edit this paste and save as new:


File Description
  • CODEVUA
  • Paste Code
  • 27 Jun-2024
  • 4.92 Kb
You can Share it: