Heatmap
Correlation Matrix Heatmap
Dark theme heatmap showing variable correlations
Output
Python
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.colors import LinearSegmentedColormap
from matplotlib.patches import FancyBboxPatch
fig, ax = plt.subplots(figsize=(10, 9), facecolor='#ffffff')
ax.set_facecolor('#ffffff')
np.random.seed(42)
variables = ['Revenue', 'Expenses', 'Profit', 'Users', 'Sessions', 'Conversion']
n = len(variables)
data = np.eye(n)
for i in range(n):
for j in range(i+1, n):
data[i, j] = data[j, i] = np.random.uniform(-0.8, 0.95)
colors = ['#ef4444', '#fca5a5', '#334155', '#67e8f9', '#06b6d4']
cmap = LinearSegmentedColormap.from_list('corr', colors, N=256)
cell_w, cell_h = 0.88, 0.88
for i in range(n):
for j in range(n):
val = data[i, j]
rect = FancyBboxPatch((j - cell_w/2, i - cell_h/2), cell_w, cell_h,
boxstyle="round,pad=0.02,rounding_size=0.12",
facecolor=cmap((val+1)/2), edgecolor='#e2e8f0', linewidth=1.5)
ax.add_patch(rect)
ax.text(j, i, f'{val:.2f}', ha='center', va='center', color='#1e293b', fontsize=9, fontweight='bold')
ax.set_xlim(-0.5, n-0.5)
ax.set_ylim(-0.5, n-0.5)
ax.set_aspect('equal')
ax.invert_yaxis()
ax.set_xticks(range(n))
ax.set_yticks(range(n))
ax.set_xticklabels(variables, rotation=45, ha='right', color='#64748b', fontsize=10, fontweight='500')
ax.set_yticklabels(variables, color='#1e293b', fontsize=10, fontweight='500')
sm = plt.cm.ScalarMappable(cmap=cmap, norm=plt.Normalize(-1, 1))
cbar = plt.colorbar(sm, ax=ax, shrink=0.8, pad=0.02)
cbar.set_label('Correlation', color='#1e293b', fontsize=11)
cbar.outline.set_edgecolor('#e2e8f0')
plt.setp(plt.getp(cbar.ax.axes, 'yticklabels'), color='#64748b')
for spine in ax.spines.values(): spine.set_visible(False)
ax.tick_params(length=0)
ax.set_title('Variable Correlation Matrix', fontsize=18, color='#1e293b', fontweight='bold', pad=20)
plt.tight_layout()
plt.show()
Library
Matplotlib
Category
Heatmaps & Density
More Heatmap examples
☕