{"spec_id":"map-tilegrid","library":"plotnine","language":"python","code":"\"\"\" anyplot.ai\nmap-tilegrid: Tile Grid Map for Equal-Area Geographic Comparison\nLibrary: plotnine 0.15.4 | Python 3.13.13\nQuality: 88/100 | Created: 2026-05-14\n\"\"\"\n\nimport os\n\nimport pandas as pd\nfrom plotnine import (\n    aes,\n    coord_fixed,\n    element_blank,\n    element_rect,\n    element_text,\n    geom_text,\n    geom_tile,\n    ggplot,\n    labs,\n    scale_color_identity,\n    scale_fill_cmap,\n    theme,\n)\n\n\n# Theme tokens\nTHEME = os.getenv(\"ANYPLOT_THEME\", \"light\")\nPAGE_BG = \"#FAF8F1\" if THEME == \"light\" else \"#1A1A17\"\nELEVATED_BG = \"#FFFDF6\" if THEME == \"light\" else \"#242420\"\nINK = \"#1A1A17\" if THEME == \"light\" else \"#F0EFE8\"\nINK_SOFT = \"#4A4A44\" if THEME == \"light\" else \"#B8B7B0\"\n\n# US state tile grid: (state, col, row, renewable_energy_pct)\n# Grid approximates geographic positions; row 0 = north, row 7 = south\nrecords = [\n    (\"ME\", 11, 0, 34),\n    (\"VT\", 10, 1, 71),\n    (\"NH\", 11, 1, 27),\n    (\"WA\", 1, 2, 74),\n    (\"MT\", 3, 2, 61),\n    (\"ND\", 4, 2, 34),\n    (\"MN\", 5, 2, 29),\n    (\"WI\", 6, 2, 14),\n    (\"MI\", 7, 2, 12),\n    (\"NY\", 9, 2, 31),\n    (\"MA\", 10, 2, 37),\n    (\"RI\", 11, 2, 20),\n    (\"OR\", 1, 3, 72),\n    (\"ID\", 2, 3, 67),\n    (\"WY\", 3, 3, 15),\n    (\"SD\", 4, 3, 58),\n    (\"IA\", 5, 3, 62),\n    (\"IL\", 6, 3, 11),\n    (\"IN\", 7, 3, 7),\n    (\"OH\", 8, 3, 5),\n    (\"PA\", 9, 3, 11),\n    (\"NJ\", 10, 3, 7),\n    (\"CT\", 11, 3, 10),\n    (\"CA\", 1, 4, 49),\n    (\"NV\", 2, 4, 22),\n    (\"UT\", 3, 4, 22),\n    (\"CO\", 4, 4, 32),\n    (\"NE\", 5, 4, 24),\n    (\"MO\", 6, 4, 8),\n    (\"KY\", 7, 4, 6),\n    (\"WV\", 8, 4, 4),\n    (\"VA\", 9, 4, 14),\n    (\"MD\", 10, 4, 12),\n    (\"DE\", 11, 4, 8),\n    (\"AZ\", 2, 5, 18),\n    (\"NM\", 3, 5, 31),\n    (\"KS\", 5, 5, 44),\n    (\"AR\", 6, 5, 14),\n    (\"TN\", 7, 5, 17),\n    (\"NC\", 8, 5, 12),\n    (\"SC\", 9, 5, 9),\n    (\"DC\", 10, 5, 2),\n    (\"TX\", 4, 6, 26),\n    (\"OK\", 5, 6, 27),\n    (\"LA\", 6, 6, 6),\n    (\"MS\", 7, 6, 8),\n    (\"AL\", 8, 6, 11),\n    (\"GA\", 9, 6, 14),\n    (\"FL\", 10, 6, 24),\n    (\"AK\", 0, 7, 28),\n    (\"HI\", 1, 7, 34),\n]\n\ndf = pd.DataFrame(records, columns=[\"state\", \"col\", \"row\", \"renewable_pct\"])\ndf[\"row_pos\"] = -df[\"row\"]  # Flip so row 0 is at top (geographic north)\n\n# Text contrast: white on dark viridis tiles, dark on bright viridis tiles\nmid = (df[\"renewable_pct\"].min() + df[\"renewable_pct\"].max()) / 2\ndf[\"label_color\"] = df[\"renewable_pct\"].apply(lambda v: \"#FFFFFF\" if v < mid else \"#1A1A17\")\n\n# Theme\nanyplot_theme = theme(\n    figure_size=(16, 9),\n    plot_background=element_rect(fill=PAGE_BG, color=PAGE_BG),\n    panel_background=element_rect(fill=PAGE_BG),\n    panel_grid_major=element_blank(),\n    panel_grid_minor=element_blank(),\n    panel_border=element_blank(),\n    axis_title=element_blank(),\n    axis_text=element_blank(),\n    axis_ticks=element_blank(),\n    axis_line=element_blank(),\n    plot_title=element_text(color=INK, size=22),\n    legend_background=element_rect(fill=ELEVATED_BG, color=INK_SOFT),\n    legend_text=element_text(color=INK_SOFT, size=14),\n    legend_title=element_text(color=INK, size=16),\n    legend_position=\"right\",\n)\n\n# Plot\nplot = (\n    ggplot(df, aes(x=\"col\", y=\"row_pos\", fill=\"renewable_pct\"))\n    + geom_tile(color=PAGE_BG, size=1.5)\n    + geom_text(aes(label=\"state\", color=\"label_color\"), size=11, fontweight=\"bold\")\n    + scale_fill_cmap(cmap_name=\"viridis\", name=\"Renewable\\nEnergy (%)\")\n    + scale_color_identity()\n    + coord_fixed()\n    + labs(title=\"US Renewable Energy Share · map-tilegrid · plotnine · anyplot.ai\")\n    + anyplot_theme\n)\n\n# Save\nplot.save(f\"plot-{THEME}.png\", dpi=300, width=16, height=9)\n"}