|
1 | | -""" pyplots.ai |
| 1 | +"""pyplots.ai |
2 | 2 | area-basic: Basic Area Chart |
3 | | -Library: altair 6.0.0 | Python 3.13.11 |
4 | | -Quality: 91/100 | Created: 2025-12-23 |
| 3 | +Library: altair 6.0.0 | Python 3.14.2 |
| 4 | +Quality: /100 | Updated: 2026-02-11 |
5 | 5 | """ |
6 | 6 |
|
7 | 7 | import altair as alt |
|
18 | 18 | weekly_pattern = np.array([1.2, 1.1, 1.0, 1.05, 1.15, 0.8, 0.7] * 5)[:30] |
19 | 19 | noise = np.random.randn(30) * 300 |
20 | 20 | visitors = (base + trend) * weekly_pattern + noise |
| 21 | +# Add a traffic spike mid-month (e.g., marketing campaign on Jan 15) |
| 22 | +visitors[14] *= 1.4 |
21 | 23 | visitors = np.maximum(visitors, 1000).astype(int) |
22 | 24 |
|
23 | 25 | df = pd.DataFrame({"date": dates, "visitors": visitors}) |
|
27 | 29 | alt.Chart(df) |
28 | 30 | .mark_area(opacity=0.4, color="#306998", line={"color": "#306998", "strokeWidth": 3}) |
29 | 31 | .encode( |
30 | | - x=alt.X("date:T", title="Date", axis=alt.Axis(labelFontSize=18, titleFontSize=22)), |
31 | | - y=alt.Y( |
32 | | - "visitors:Q", |
33 | | - title="Daily Visitors", |
34 | | - scale=alt.Scale(domain=[0, df["visitors"].max() * 1.1]), |
35 | | - axis=alt.Axis(labelFontSize=18, titleFontSize=22), |
36 | | - ), |
| 32 | + x=alt.X("date:T", title="Date"), |
| 33 | + y=alt.Y("visitors:Q", title="Daily Visitors (count)", scale=alt.Scale(domain=[0, df["visitors"].max() * 1.1])), |
| 34 | + tooltip=[ |
| 35 | + alt.Tooltip("date:T", title="Date", format="%b %d, %Y"), |
| 36 | + alt.Tooltip("visitors:Q", title="Visitors", format=","), |
| 37 | + ], |
37 | 38 | ) |
38 | 39 | .properties(width=1600, height=900, title=alt.Title("area-basic · altair · pyplots.ai", fontSize=28)) |
39 | | - .configure_axis(grid=True, gridOpacity=0.3, gridDash=[4, 4]) |
| 40 | + .configure_axis(grid=True, gridOpacity=0.3, gridDash=[4, 4], labelFontSize=18, titleFontSize=22) |
40 | 41 | .configure_view(strokeWidth=0) |
41 | 42 | ) |
42 | 43 |
|
43 | | -# Save as PNG (1600 × 900 × 3 = 4800 × 2700 px) |
| 44 | +# Save as PNG (1600 × 900 at scale_factor=3 → 4800 × 2700 px) |
44 | 45 | chart.save("plot.png", scale_factor=3.0) |
45 | 46 |
|
46 | 47 | # Save interactive HTML version |
|
0 commit comments