Changelog #2
Small adjustments and QoL
- Ridge line plot is now draggable. Great for monitoring artist dominance and growth/diminishment cycles over time.
- Transition animations have been implemented in genre view, at the request of eager chart enjoyers. Goes great with the draggable ridge line plot! Give it a whirl!
- Bubble text will now fit to the bubble's size. Artists with longer names get line broken to fit their bubbles (though mileage may vary).
What's in the works for next time?
- Instagram formatting test flight: Playing with media queries at an exact 1080x1440 pixel view (3:4 aspect ratio). Determining how best to resize elements for Instagram profile feed visibility, where to place Novem watermarks, user handle, chart id, tags, etc.
- Additional transition animations between genre view and artist view. I'm sure d3 has got me covered with this one.
Changelog #1
This plot's been updated and is now more interactible than the previous iteration!
- Bubbles are now clickable which "drills down" one layer, detailing streaming share of each artist belonging to that genre.
- Bar chart has been replaced with a ridge line plot. I got rid of the scrubber, but it is still navigable. Hovering over the plot previews a stat overview from that date. Click anywhere on the ridge line plot to navigate to that highlighted date. This also works while in the detailed bubble view for any given genre.
- Color scheme has been updated. The previous palette resembled that of generic party balloons. It's now placed on a gradient color scale. More purple = larger stream share <------> smaller stream share = more bourbon. Sleek and pleasant.
Note: The "other" category is not viewable, as a detailed view would basically display heaps of uniformally sized bubbles; one for every track. Neither particularly useful nor aesthetically pleasing.
Description
Genre Breakdown — Spotify Global Top 200
Stream share by music genre, updated daily. Shows how listening is distributed across genre categories for the current day, with tools to explore individual artists and travel back through recent history.
How to use this chart
Bubble area (top)
- Each bubble represents a genre; size encodes its share of total streams for the selected date.
- Click a genre bubble to drill into it — the bubble expands to fill the area and artist sub-bubbles appear inside, sized by their contribution to that genre's streams.
- Click an artist bubble to see a track-level breakdown: position, title, stream count, and daily change for every track that artist had charting on the selected date.
- Click outside the expanded bubble (or use the ← button) to step back up a level.
Ridgeline plot (bottom)
- Shows the stream-share trend for the top genres over time. Each ridge is one genre; vertical height encodes stream share.
- Click anywhere on the ridgeline to jump to that date — the bubble chart and header date update instantly.
- Hover to preview a date before committing; an amber cursor marks the currently selected date.
Data sources & processing
| Stage | Source | Details |
|---|---|---|
| Charts | kworb.net | Scraped daily at 06:00 Oslo time; Spotify Global Top 200 |
| Genre | Last.fm artist.getinfo | Top user-applied tag per artist, lower-cased |
| Storage | Supabase | Normalised into tracks, artists, daily_charts tables |
Genre normalisation — raw Last.fm tags are mapped to a smaller set of display genres (e.g. "uk hip hop", "rap", "trap" → "hip-hop/rap"). The top 10 genres by stream share are shown individually; everything else is grouped into Other.
Colour encoding — genres are ranked by their average stream share across all available dates and assigned a colour from the Plasma perceptual gradient (rank 1 = brightest). This keeps colours stable across dates so the same genre always appears in the same hue.
Interpretation notes
- Stream share is each genre's streams divided by total streams in the Top 200 for that date — it reflects relative listening weight, not absolute volume.
- Short-lived spikes in the ridgeline often correspond to a viral release or playlist push within a genre.
- The Other bubble aggregates all genres outside the top 10 and is excluded from the ridgeline to keep it readable.
- Genre attribution is at the artist level (not track level), so a track inherits the primary genre of its lead artist.