Heatmap
Multi-class Confusion Matrix
Classification results with precision annotations
Output
Python
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np
from matplotlib.colors import LinearSegmentedColormap
np.random.seed(42)
# Simulated confusion matrix
classes = ['Cat', 'Dog', 'Bird', 'Fish', 'Horse']
n_classes = len(classes)
# Create realistic confusion matrix
cm = np.zeros((n_classes, n_classes), dtype=int)
for i in range(n_classes):
total = np.random.randint(80, 120)
cm[i, i] = int(total * np.random.uniform(0.75, 0.95)) # True positives
remaining = total - cm[i, i]
for j in range(n_classes):
if i != j:
cm[i, j] = np.random.randint(0, remaining // (n_classes - 1) + 1)
df = pd.DataFrame(cm, index=classes, columns=classes)
# NEON blue colormap
neon_blue = LinearSegmentedColormap.from_list('neon_blue', ['#ffffff', '#27D3F5', '#4927F5', '#5314E6'])
fig, ax = plt.subplots(figsize=(8, 6), facecolor='#ffffff')
ax.set_facecolor('#ffffff')
sns.heatmap(df, cmap=neon_blue, annot=True, fmt='d', linewidths=2, linecolor='#ffffff',
annot_kws={'size': 14, 'fontweight': 'bold'},
cbar_kws={'shrink': 0.8, 'label': 'Count'}, ax=ax)
ax.set_title('Multi-class Confusion Matrix', color='#1f2937', fontsize=14, fontweight='bold', pad=15)
ax.set_xlabel('Predicted Class', color='#1f2937', fontsize=11)
ax.set_ylabel('True Class', color='#1f2937', fontsize=11)
ax.tick_params(colors='#374151', labelsize=11)
# Add accuracy annotation
accuracy = np.trace(cm) / np.sum(cm)
ax.text(0.98, 0.02, f'Accuracy: {accuracy:.1%}', transform=ax.transAxes,
ha='right', va='bottom', fontsize=12, fontweight='bold', color='#4927F5',
bbox=dict(boxstyle='round', facecolor='#f3f4f6', edgecolor='#4927F5'))
plt.tight_layout()
plt.show()
Library
Matplotlib
Category
Heatmaps & Density
More Heatmap examples
☕