Heatmap

Music Streaming Analytics

Clean heatmap of music streaming data

Output
Music Streaming Analytics
Python
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.colors import LinearSegmentedColormap

np.random.seed(456)
genres = ['Pop', 'Hip-Hop', 'Rock', 'Electronic', 'R&B', 'Latin', 'K-Pop', 'Indie']
platforms = ['Spotify', 'Apple', 'YouTube', 'Amazon', 'Tidal', 'Deezer']
data = np.random.randint(10, 95, (len(genres), len(platforms)))
data[0, 0:2] = [98, 92]
data[1, 0:3] = [95, 88, 96]

# Subtle: Light → Mint green
colors = ['#f0fdf4', '#bbf7d0', '#4ade80', '#27F5B0']
cmap = LinearSegmentedColormap.from_list('SubtleMint', colors, N=256)

fig, ax = plt.subplots(figsize=(12, 9), facecolor='#ffffff')
im = ax.imshow(data, cmap=cmap, aspect='auto', vmin=0, vmax=100)

ax.set_xticks(range(len(platforms)))
ax.set_yticks(range(len(genres)))
ax.set_xticklabels(platforms, fontsize=11, color='#374151')
ax.set_yticklabels(genres, fontsize=11, color='#1f2937')

for i in range(len(genres)):
    for j in range(len(platforms)):
        val = data[i, j]
        color = '#1f2937'
        ax.text(j, i, f'{val}M', ha='center', va='center', fontsize=10, fontweight='500', color=color)

cbar = plt.colorbar(im, ax=ax, shrink=0.6, pad=0.02)
cbar.set_label('Streams (M)', fontsize=11, color='#1f2937')
cbar.ax.tick_params(labelsize=9, colors='#6b7280')
cbar.outline.set_visible(False)

for spine in ax.spines.values():
    spine.set_visible(False)
ax.tick_params(length=0)
ax.set_title('Music Streaming by Genre & Platform', fontsize=16, color='#1f2937', fontweight='bold', pad=15)

plt.tight_layout()
plt.show()
Library

Matplotlib

Category

Heatmaps & Density

Did this help you?

Support PyLucid to keep it free & growing

Support