{"spec_id":"histogram-stacked","library":"pygal","language":"python","code":"\"\"\" anyplot.ai\nhistogram-stacked: Stacked Histogram\nLibrary: pygal 3.1.0 | Python 3.13.13\nQuality: 73/100 | Updated: 2026-05-12\n\"\"\"\n\nimport numpy as np\nimport pygal\nfrom pygal.style import Style\n\n\n# Data - Three groups with different distributions (plant growth measurements in cm)\nnp.random.seed(42)\ngroup_a = np.random.normal(25, 5, 150)  # Shade-grown plants\ngroup_b = np.random.normal(35, 7, 180)  # Partial-sun plants\ngroup_c = np.random.normal(45, 6, 120)  # Full-sun plants\n\n# Define bin edges\nbin_edges = np.linspace(5, 65, 13)  # 12 bins from 5 to 65 cm\n\n# Compute histogram counts for each group\ncounts_a, _ = np.histogram(group_a, bins=bin_edges)\ncounts_b, _ = np.histogram(group_b, bins=bin_edges)\ncounts_c, _ = np.histogram(group_c, bins=bin_edges)\n\n# Create bin labels (center of each bin)\nbin_labels = [f\"{int(bin_edges[i])}-{int(bin_edges[i + 1])}\" for i in range(len(bin_edges) - 1)]\n\n# Custom style for pyplots.ai\ncustom_style = Style(\n    background=\"white\",\n    plot_background=\"white\",\n    foreground=\"#333333\",\n    foreground_strong=\"#333333\",\n    foreground_subtle=\"#666666\",\n    colors=(\"#306998\", \"#FFD43B\", \"#4CAF50\"),  # Python Blue, Yellow, Green\n    title_font_size=60,\n    label_font_size=36,\n    major_label_font_size=32,\n    legend_font_size=36,\n    value_font_size=28,\n    tooltip_font_size=28,\n    stroke_width=2,\n)\n\n# Create stacked bar chart (pygal Bar with stacked data simulates stacked histogram)\nchart = pygal.StackedBar(\n    width=4800,\n    height=2700,\n    style=custom_style,\n    title=\"histogram-stacked \\u00b7 pygal \\u00b7 pyplots.ai\",\n    x_title=\"Plant Height (cm)\",\n    y_title=\"Frequency\",\n    show_y_guides=True,\n    show_x_guides=False,\n    legend_at_bottom=False,\n    legend_box_size=30,\n    margin=50,\n    spacing=10,\n    truncate_legend=-1,\n)\n\n# Set x-axis labels\nchart.x_labels = bin_labels\n\n# Add stacked data\nchart.add(\"Shade-grown\", counts_a.tolist())\nchart.add(\"Partial-sun\", counts_b.tolist())\nchart.add(\"Full-sun\", counts_c.tolist())\n\n# Save outputs\nchart.render_to_png(\"plot.png\")\nchart.render_to_file(\"plot.html\")\n"}