{"spec_id":"area-basic","library":"makie","language":"julia","code":"# anyplot.ai\n# area-basic: Basic Area Chart\n# Library: makie 0.22.10 | Julia 1.11.9\n# Quality: 91/100 | Created: 2026-05-28\n\nusing CairoMakie\nusing Colors\nusing Random\n\nRandom.seed!(42)\n\n# Theme tokens\nconst THEME       = get(ENV, \"ANYPLOT_THEME\", \"light\")\nconst PAGE_BG     = THEME == \"light\" ? colorant\"#FAF8F1\" : colorant\"#1A1A17\"\nconst INK         = THEME == \"light\" ? colorant\"#1A1A17\" : colorant\"#F0EFE8\"\nconst INK_SOFT    = THEME == \"light\" ? colorant\"#4A4A44\" : colorant\"#B8B7B0\"\nconst IMPRINT_PALETTE = [\n    colorant\"#009E73\", colorant\"#C475FD\", colorant\"#4467A3\", colorant\"#BD8233\",\n    colorant\"#AE3030\", colorant\"#2ABCCD\", colorant\"#954477\", colorant\"#99B314\",\n]\n\n# Data: hourly CPU utilization over 48 hours (diurnal workload pattern)\nn = 48\nhours = collect(0:(n - 1))\nbase_load = 30.0 .+ 28.0 .* sin.(2π .* (hours .- 6) ./ 24)\nnoise = 5.0 .* randn(n)\ncpu_usage = clamp.(base_load .+ noise, 5.0, 95.0)\n\n# Plot\nfig = Figure(\n    size            = (1600, 900),\n    fontsize        = 14,\n    backgroundcolor = PAGE_BG,\n)\n\nax = Axis(\n    fig[1, 1];\n    title              = \"area-basic · julia · makie · anyplot.ai\",\n    titlesize          = 20,\n    titlecolor         = INK,\n    xlabel             = \"Hour\",\n    ylabel             = \"CPU Utilization (%)\",\n    xlabelsize         = 14,\n    ylabelsize         = 14,\n    xlabelcolor        = INK,\n    ylabelcolor        = INK,\n    xticklabelsize     = 12,\n    yticklabelsize     = 12,\n    xticklabelcolor    = INK_SOFT,\n    yticklabelcolor    = INK_SOFT,\n    xtickcolor         = INK_SOFT,\n    ytickcolor         = INK_SOFT,\n    backgroundcolor    = PAGE_BG,\n    topspinevisible    = false,\n    rightspinevisible  = false,\n    leftspinecolor     = INK_SOFT,\n    bottomspinecolor   = INK_SOFT,\n    xgridvisible       = false,\n    ygridcolor         = RGBAf(Float32(INK.r), Float32(INK.g), Float32(INK.b), 0.15f0),\n    yticks             = [0, 25, 50, 75, 100],\n    yminorgridvisible  = false,\n    xminorgridvisible  = false,\n)\n\n# Area fill (semi-transparent)\nband!(ax, hours, zeros(n), cpu_usage;\n    color = (IMPRINT_PALETTE[1], 0.35))\n\n# Line on top\nlines!(ax, hours, cpu_usage;\n    color     = IMPRINT_PALETTE[1],\n    linewidth = 2.5)\n\n# Day boundary — vertical dashed separator at hour 24\nvlines!(ax, [24]; color = (INK_SOFT, 0.5), linewidth = 1.5, linestyle = :dash)\n\n# Day labels near the top of the plot area\ntext!(ax, 12, 93; text = \"Day 1\", color = INK_SOFT, fontsize = 12, align = (:center, :top))\ntext!(ax, 36, 93; text = \"Day 2\", color = INK_SOFT, fontsize = 12, align = (:center, :top))\n\nylims!(ax, 0, 100)\nxlims!(ax, 0, n - 1)\n\n# Save\nsave(\"plot-$(THEME).png\", fig; px_per_unit = 2)\n"}