twoHelixestwoHelixes Start free

Datasets / Web traffic

Monthly sessions by acquisition source

Growth is a comparison of slopes, so every source is drawn on one axis at one scale - not one panel each.

Question which traffic source grew the most this year?
Monthly sessions by source050k100k150k200kJanFebMarAprMayJunJulAugSepOctNovDecMonthOrganicDirectPaidSocialReferral
Web traffic — 60 rows charted from 1,825, drawn as a line
How it decided
Finding the data174 ms

Web traffic: 1,825 rows, 6 columns. day, source and sessions. Bounce rate is a different question.

Shaping the data15 ms

1,825 rows in, 60 out across 3 columns. Growth is a comparison of slopes, so every source is drawn on one axis at one scale - not one panel each.

Choosing the chart16 ms

line. One line per source on a shared axis. Small multiples would make the slopes incomparable, which is the whole question.

Applying defaults1 ms

Palette, spacing, axis titles and legend placement applied. 0 issues found.

The transformation

This is the code, not a description of it — the chart above was drawn from what it returns, and the notebook download runs the same lines against the same file.

df["month"] = df["day"].astype("datetime64[ns]").dt.to_period("M").dt.to_timestamp()
result = df.groupby(["month", "source"], as_index=False)["sessions"].sum()

What it charted

60 rows out of 1,825, 3 columns. First 8 shown.

monthsourcesessions
2025-01-01Direct68415
2025-01-01Organic147228
2025-01-01Paid51087
2025-01-01Referral17537
2025-01-01Social25915
2025-02-01Direct61944
2025-02-01Organic132899
2025-02-01Paid46253