{"spec_id":"histogram-density","library":"plotnine","language":"python","code":"\"\"\" anyplot.ai\nhistogram-density: Density Histogram\nLibrary: plotnine 0.15.4 | Python 3.13.13\nQuality: 89/100 | Updated: 2026-05-11\n\"\"\"\n\nimport os\nimport sys\n\nimport numpy as np\nimport pandas as pd\nfor path in list(sys.path):\n    if path.endswith(\"histogram-density/implementations/python\"):\n        sys.path.remove(path)\n\nfrom plotnine import (\n    aes,\n    after_stat,\n    element_line,\n    element_rect,\n    element_text,\n    geom_density,\n    geom_histogram,\n    ggplot,\n    labs,\n    theme,\n    theme_minimal,\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\nBRAND = \"#009E73\"  # Okabe-Ito position 1\nACCENT = \"#C475FD\"  # Okabe-Ito position 2\n\n# Data - bimodal distribution for compelling visualization\nnp.random.seed(42)\nn_samples = 500\n\ngroup1 = np.random.normal(loc=65, scale=8, size=n_samples // 2)\ngroup2 = np.random.normal(loc=85, scale=6, size=n_samples // 2)\nvalues = np.concatenate([group1, group2])\n\ndf = pd.DataFrame({\"values\": values})\n\n# Theme configuration\nanyplot_theme = theme(\n    plot_background=element_rect(fill=PAGE_BG, color=PAGE_BG),\n    panel_background=element_rect(fill=PAGE_BG),\n    panel_grid_major_y=element_line(color=INK, size=0.3, alpha=0.10),\n    panel_grid_minor=element_line(color=INK, size=0.2, alpha=0.05),\n    panel_border=element_rect(color=INK_SOFT, fill=None),\n    axis_title=element_text(color=INK, size=20),\n    axis_text=element_text(color=INK_SOFT, size=16),\n    axis_line=element_line(color=INK_SOFT),\n    plot_title=element_text(color=INK, size=24),\n    legend_background=element_rect(fill=ELEVATED_BG, color=INK_SOFT),\n    legend_text=element_text(color=INK_SOFT, size=16),\n    legend_title=element_text(color=INK, size=16),\n    figure_size=(16, 9),\n)\n\n# Plot\nplot = (\n    ggplot(df, aes(x=\"values\"))\n    + geom_histogram(aes(y=after_stat(\"density\")), bins=30, fill=BRAND, color=\"white\", alpha=0.7)\n    + geom_density(color=ACCENT, size=2, alpha=0.8)\n    + labs(x=\"Test Score (points)\", y=\"Density\", title=\"histogram-density · plotnine · anyplot.ai\")\n    + theme_minimal()\n    + anyplot_theme\n)\n\n# Save\nplot.save(f\"plot-{THEME}.png\", dpi=300, verbose=False)\n"}