{"spec_id":"line-basic","library":"altair","language":"python","code":"\"\"\" anyplot.ai\nline-basic: Basic Line Plot\nLibrary: altair 6.1.0 | Python 3.13.13\nQuality: 86/100 | Updated: 2026-04-29\n\"\"\"\n\nimport os\n\nimport altair as alt\nimport numpy as np\nimport pandas as pd\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\"\nBRAND = \"#009E73\"\n\n# Data - Monthly temperature readings over a year\nnp.random.seed(42)\nmonths = pd.date_range(start=\"2024-01-01\", periods=12, freq=\"MS\")\nbase_temp = 15 + 12 * np.sin((np.arange(12) - 3) * np.pi / 6)\ntemperature = base_temp + np.random.randn(12) * 2\ndf = pd.DataFrame({\"Month\": months, \"Temperature\": temperature})\n\n# Plot\ntooltip_enc = [\n    alt.Tooltip(\"Month:T\", title=\"Month\", format=\"%B %Y\"),\n    alt.Tooltip(\"Temperature:Q\", title=\"Temperature (°C)\", format=\".1f\"),\n]\n\nline = (\n    alt.Chart(df)\n    .mark_line(strokeWidth=4, color=BRAND)\n    .encode(x=alt.X(\"Month:T\", title=\"Month\"), y=alt.Y(\"Temperature:Q\", title=\"Temperature (°C)\"))\n)\n\npoints = (\n    alt.Chart(df)\n    .mark_point(size=200, color=BRAND, filled=True)\n    .encode(x=\"Month:T\", y=\"Temperature:Q\", tooltip=tooltip_enc)\n)\n\nchart = (\n    (line + points)\n    .interactive()\n    .properties(\n        width=1600, height=900, title=alt.Title(\"line-basic · altair · anyplot.ai\", fontSize=28), background=PAGE_BG\n    )\n    .configure_view(fill=PAGE_BG, stroke=INK_SOFT)\n    .configure_axis(\n        domainColor=INK_SOFT,\n        tickColor=INK_SOFT,\n        gridColor=INK,\n        gridOpacity=0.15,\n        labelColor=INK_SOFT,\n        titleColor=INK,\n        labelFontSize=18,\n        titleFontSize=22,\n    )\n    .configure_title(color=INK, fontSize=28)\n    .configure_legend(fillColor=ELEVATED_BG, strokeColor=INK_SOFT, labelColor=INK_SOFT, titleColor=INK)\n)\n\n# Save\nchart.save(f\"plot-{THEME}.png\", scale_factor=3.0)\nchart.save(f\"plot-{THEME}.html\")\n"}