{"spec_id":"line-filled","library":"altair","language":"python","code":"\"\"\" anyplot.ai\nline-filled: Filled Line Plot\nLibrary: altair 6.1.0 | Python 3.13.13\nQuality: 72/100 | Updated: 2026-05-12\n\"\"\"\n\nimport altair as alt\nimport numpy as np\nimport pandas as pd\n\n\n# Data - Website traffic over a month\nnp.random.seed(42)\ndays = np.arange(1, 31)\n# Simulate daily visitors with weekly patterns and growth trend\nbase = 5000 + days * 100  # Growth trend\nweekly_pattern = 800 * np.sin(2 * np.pi * days / 7)  # Weekly cycle\nnoise = np.random.normal(0, 300, len(days))\nvisitors = base + weekly_pattern + noise\nvisitors = np.maximum(visitors, 1000)  # Ensure positive values\n\ndf = pd.DataFrame({\"Day\": days, \"Visitors\": visitors})\n\n# Create filled line chart (area chart)\nchart = (\n    alt.Chart(df)\n    .mark_area(\n        line={\"color\": \"#306998\", \"strokeWidth\": 3},\n        color=alt.Gradient(\n            gradient=\"linear\",\n            stops=[\n                alt.GradientStop(color=\"rgba(48, 105, 152, 0.4)\", offset=0),\n                alt.GradientStop(color=\"rgba(48, 105, 152, 0.1)\", offset=1),\n            ],\n            x1=1,\n            x2=1,\n            y1=1,\n            y2=0,\n        ),\n    )\n    .encode(\n        x=alt.X(\"Day:Q\", title=\"Day of Month\", axis=alt.Axis(labelFontSize=18, titleFontSize=22)),\n        y=alt.Y(\"Visitors:Q\", title=\"Daily Visitors\", axis=alt.Axis(labelFontSize=18, titleFontSize=22)),\n        tooltip=[\"Day:Q\", \"Visitors:Q\"],\n    )\n    .properties(\n        width=1600, height=900, title=alt.Title(\"line-filled · altair · pyplots.ai\", fontSize=28, anchor=\"middle\")\n    )\n    .configure_axis(grid=True, gridOpacity=0.3, gridDash=[3, 3])\n    .configure_view(strokeWidth=0)\n)\n\n# Save as PNG and HTML\nchart.save(\"plot.png\", scale_factor=3.0)\nchart.save(\"plot.html\")\n"}