{"spec_id":"bar-horizontal","library":"plotnine","language":"python","code":"\"\"\" anyplot.ai\nbar-horizontal: Horizontal Bar Chart\nLibrary: plotnine 0.15.7 | Python 3.13.14\nQuality: 91/100 | Updated: 2026-08-05\n\"\"\"\n\nimport os\nimport sys\nfrom importlib import import_module\n\n\nremove_paths = {os.path.dirname(os.path.abspath(__file__)), os.getcwd()}\nsys.path[:] = [p for p in sys.path if os.path.abspath(p) not in remove_paths]\n\nimport pandas as pd\n\n\npn = import_module(\"plotnine\")\naes = pn.aes\ncoord_flip = pn.coord_flip\nelement_blank = pn.element_blank\nelement_line = pn.element_line\nelement_rect = pn.element_rect\nelement_text = pn.element_text\ngeom_bar = pn.geom_bar\ngeom_text = pn.geom_text\nggplot = pn.ggplot\nlabs = pn.labs\nscale_alpha_manual = pn.scale_alpha_manual\nscale_y_continuous = pn.scale_y_continuous\ntheme = pn.theme\ntheme_minimal = pn.theme_minimal\n\n\n# Theme tokens\nTHEME = os.getenv(\"ANYPLOT_THEME\", \"light\")\nPAGE_BG = \"#FAF8F1\" if THEME == \"light\" else \"#1A1A17\"\nINK = \"#1A1A17\" if THEME == \"light\" else \"#F0EFE8\"\nINK_SOFT = \"#4A4A44\" if THEME == \"light\" else \"#B8B7B0\"\nBRAND = \"#009E73\"  # Imprint palette position 1 — ALWAYS first series\n\n# Data: Top 10 programming languages by popularity (survey results)\ndata = {\n    \"language\": [\"JavaScript\", \"Python\", \"Java\", \"TypeScript\", \"C#\", \"C++\", \"PHP\", \"Go\", \"Rust\", \"Swift\"],\n    \"users_percent\": [65.6, 49.3, 35.4, 34.8, 29.7, 23.0, 18.4, 14.3, 13.1, 6.6],\n}\n\ndf = pd.DataFrame(data)\n\n# Sort by value and convert to categorical for proper ordering\ndf = df.sort_values(\"users_percent\", ascending=True)\ndf[\"language\"] = pd.Categorical(df[\"language\"], categories=df[\"language\"], ordered=True)\ndf[\"value_label\"] = df[\"users_percent\"].map(lambda v: f\"{v:.1f}%\")\n\n# Emphasis layer: the top-ranked bar (highest usage) is drawn at full opacity,\n# the rest at reduced opacity, sharpening the ranking's focal point.\ndf[\"highlight\"] = df[\"users_percent\"] == df[\"users_percent\"].max()\n\n# Theme-adaptive styling\nanyplot_theme = theme(\n    figure_size=(8, 4.5),\n    text=element_text(size=7),\n    plot_background=element_rect(fill=PAGE_BG, color=PAGE_BG),\n    panel_background=element_rect(fill=PAGE_BG, color=PAGE_BG),\n    panel_grid_major_x=element_line(color=INK, size=0.3, alpha=0.10),\n    panel_grid_minor_x=element_line(color=INK, size=0.2, alpha=0.05),\n    panel_grid_major_y=element_blank(),\n    panel_grid_minor_y=element_blank(),\n    panel_border=element_blank(),\n    axis_ticks_major=element_blank(),\n    axis_ticks_minor=element_blank(),\n    axis_title=element_text(size=10, color=INK),\n    axis_text=element_text(size=8, color=INK_SOFT),\n    axis_line=element_line(color=INK_SOFT),\n    plot_title=element_text(size=12, color=INK, weight=\"bold\"),\n)\n\n# Plot — value labels at bar ends (spec: \"Value labels can be placed at the end of bars\")\n# The top-ranked bar is highlighted via alpha; every bar keeps the same brand hue.\nplot = (\n    ggplot(df, aes(x=\"language\", y=\"users_percent\"))\n    + geom_bar(\n        aes(alpha=\"highlight\"), stat=\"identity\", fill=BRAND, color=PAGE_BG, size=0.3, width=0.7, show_legend=False\n    )\n    + scale_alpha_manual(values={True: 1.0, False: 0.45})\n    + geom_text(aes(label=\"value_label\"), nudge_y=1.6, ha=\"left\", size=3.5, color=INK_SOFT)\n    + coord_flip()\n    + scale_y_continuous(expand=(0, 0, 0.12, 3))\n    + labs(x=\"Programming Language\", y=\"Developer Usage (%)\", title=\"bar-horizontal · python · plotnine · anyplot.ai\")\n    + theme_minimal()\n    + anyplot_theme\n)\n\n# Save\nplot.save(f\"plot-{THEME}.png\", dpi=400, width=8, height=4.5, units=\"in\", verbose=False)\n"}